Как полностью избавиться от «$ (ReplacableToken ...)» в web.config - PullRequest
55 голосов
/ 26 августа 2011

Я создаю публикуемый пакет, и когда я перехожу в каталог obj\Debug\Package\PackageTmp, я вижу, что строка подключения web.config заменяется заменяемым токеном, и я просто не хочу этого.Я не буду использовать публикацию командных файлов или что-то еще, я буду копировать файлы в каталоге (я использую систему пакетов публикации только для того, чтобы избавиться от большого количества динамически генерируемых файлов, пока я тестирую свой проект, и получаюсвежее / оригинальное дерево файлов моего проекта) Мне не нужны эти токены, преобразования и т. д. web.config, я просто хочу, чтобы мой файл web.config копировался так же, как любой другой файл.Как мне этого добиться?Я видел /p:AutoParameterizationWebConfigConnectionStrings=False метод для запятой, но я не использую командную строку, я использую графический интерфейс для создания пакета.Как я не позволю web.config изменить строку подключения на токен?

И прежде чем вы скажете: да, я знаю, что могу скопировать исходный файл web.config из моего исходного каталога, но я нехочу разобраться с этим и с этим, я хочу закончить его одним кликом, так как я тестирую пакет публикации и часто воссоздаю пакет.

Ответы [ 4 ]

102 голосов
/ 28 сентября 2011

Вы должны отредактировать ваш файл .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>
15 голосов
/ 19 апреля 2013

Мне пришлось сделать то, что сказал принятый ответ , но вместо этого в файле Properties/PublishProfiles/__THEPROFILE__.pubxml, а не в файле .csproj.

(может, потому что я использую VS2012?)

5 голосов
/ 05 ноября 2014

У меня была похожая проблема, когда я пытался создать внешний пакет веб-проекта для установки WiX в соответствии с инструкциями Travis Illig . Я решил это, добавив AutoParameterizationWebConfigConnectionStrings=False к MSBuild/@Properties:

<MSBuild Projects="%(ProjectReference.FullPath)"
         Targets="Package"
         Properties="Configuration=$(Configuration);Platform=AnyCPU;AutoParameterizationWebConfigConnectionStrings=False"
         Condition="'%(ProjectReference.WebProject)'=='True'"
0 голосов
/ 03 сентября 2014

Мне пришлось добавить следующее в Release разделе моего файла Project.csproj:

<InsertAdditionalWebCofigConnectionStrings>False</InsertAdditionalWebCofigConnectionStrings>
...