如何完全摆脱web.config中的“$(ReplacableToken ...)”

时间:2011-08-26 16:18:04

标签: visual-studio-2010 visual-studio web-config publish

我正在创建一个可发布的包,当我导航到obj\Debug\Package\PackageTmp目录时,我看到web.config的连接字符串被替换为可替换的令牌,我根本就不希望这样。我将不会使用发布批处理文件或任何东西,我将复制目录中的文件(我正在使用发布包系统,以便在我测试我的项目时获取大量动态生成的文件并获取我的项目的新/原始文件树)我不想要那些web.config标记和转换等,我只是希望我的web.config文件像任何其他文件一样被复制。我如何实现这一目标?我已经看到了commad行的/p:AutoParameterizationWebConfigConnectionStrings=False方法,但我没有使用命令行,我正在使用GUI来创建包。如何阻止web.config将连接字符串更改为令牌?

在您说:是的之前,我知道我可以从原始目录中复制原始的web.config,但我不想处理这个问题,我希望只需点击一下即可完成我正在测试发布包并经常重新创建包。

4 个答案:

答案 0 :(得分:101)

您必须编辑.csproj文件,并且在Debug PropertyGroup中您必须添加以下内容:

<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>

我在Project.csproj中的发布 ReleaseCERT 配置中有以下内容(我只添加了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>

答案 1 :(得分:15)

我必须执行accepted answer所说的内容,而是在Properties/PublishProfiles/__THEPROFILE__.pubxml文件而不是.csproj文件中。

(这可能是因为我使用的是VS2012?)

答案 2 :(得分:5)

当我尝试根据Travis Illig instructions在外部为 WiX 设置创建Web项目包时,我遇到了类似的问题。我通过将AutoParameterizationWebConfigConnectionStrings=False添加到MSBuild/@Properties

来解决了这个问题
<MSBuild Projects="%(ProjectReference.FullPath)"
         Targets="Package"
         Properties="Configuration=$(Configuration);Platform=AnyCPU;AutoParameterizationWebConfigConnectionStrings=False"
         Condition="'%(ProjectReference.WebProject)'=='True'"

答案 3 :(得分:-2)

我必须在Release文件的Project.csproj条件部分添加以下内容:

<InsertAdditionalWebCofigConnectionStrings>False</InsertAdditionalWebCofigConnectionStrings>