Как избавиться от "$ (ReplacableToken...)" в web.config полностью
Я создаю публикационный пакет, и когда я перехожу в каталог obj\Debug\Package\PackageTmp
, я вижу, что строка подключения web.config заменена заменяемым токеном, и я просто этого не хочу. Я не буду использовать публикацию пакетных файлов или что-нибудь еще, я буду копировать файлы в каталоге (я использую систему издательских пакетов только для того, чтобы избавиться от большого количества динамически сгенерированных файлов, пока я тестирую свой проект и получаю новое/исходное дерево файлов моего проекта) Мне не нужны теги и преобразования web.config и т.д., я просто хочу, чтобы мой файл web.config был скопирован точно так же, как и любой другой файл. Как мне это достичь? Я видел метод /p:AutoParameterizationWebConfigConnectionStrings=False
для строки commad, но я не использую командную строку, я использую GUI для создания пакета. Как я могу остановить web.config от изменения строки подключения на токен?
И прежде чем вы скажете: да, я знаю, что могу скопировать исходный файл web.config из моего исходного каталога, но я не хочу иметь дело с этим и тем, что хочу закончить его одним щелчком мыши, поскольку я 'm тестирование пакета публикации и часто повторное создание пакета.
Ответы
Ответ 1
Вам нужно отредактировать файл .csproj, и в Debug PropertyGroup вам нужно будет добавить следующее:
<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>
У меня есть следующее в Release и ReleaseCERT Конфигурации в моем Project.csproj(я только добавил строку AutoParameterizationWebConfigConnectionStrings):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == '**Release**|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<!-- add the following line to avoid ConnectionString tokenization -->
<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == '**ReleaseCERT**|AnyCPU'">
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<!-- add the following line to avoid ConnectionString tokenization -->
<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>
</PropertyGroup>
Ответ 2
Мне нужно было сделать то, что сказал принятый ответ, но вместо этого в файле Properties/PublishProfiles/__THEPROFILE__.pubxml
, а не в файле .csproj
.
(может быть, потому что я использую VS2012?)
Ответ 3
У меня была аналогичная проблема, когда я пытался создать пакет веб-проектов извне для установки WiX в соответствии с Travis Illig инструкции. Я решил это, добавив AutoParameterizationWebConfigConnectionStrings=False
в MSBuild/@Properties
:
<MSBuild Projects="%(ProjectReference.FullPath)"
Targets="Package"
Properties="Configuration=$(Configuration);Platform=AnyCPU;AutoParameterizationWebConfigConnectionStrings=False"
Condition="'%(ProjectReference.WebProject)'=='True'"
Ответ 4
Мне пришлось добавить следующее в разделе условия Release
моего файла Project.csproj
:
<InsertAdditionalWebCofigConnectionStrings>False</InsertAdditionalWebCofigConnectionStrings>