web-dev-qa-db-ja.com

web.configの「$(ReplacableToken ...)」を完全に取り除く方法

公開可能なパッケージを作成していますが、obj\Debug\Package\PackageTmpディレクトリに移動すると、web.configの接続文字列が置き換え可能なトークンに置き換えられているのがわかります。パブリッシングバッチファイルなどは使用せず、ファイルをディレクトリにコピーします(パブリッシングパッケージシステムを使用して、プロジェクトをテストしている間、動的に生成された多くのファイルを削除します。プロジェクトの新鮮な/元のファイルツリー)web.configトークンや変換などは必要ありません。他のファイルと同じように、web.configファイルをコピーするだけです。どうすればそれを達成できますか?コンマドラインの/p:AutoParameterizationWebConfigConnectionStrings=Falseメソッドを確認しましたが、コマンドラインを使用せず、GUIを使用してパッケージを作成しています。 web.configが接続文字列をトークンに変更しないようにするにはどうすればよいですか?

そして、あなたが言う前に:はい、私は元のweb.configを元のディレクトリからコピーできることを知っていますが、これに対処したくないので、テストしているときにシングルクリックで終了したいと思います。パッケージを公開し、パッケージを頻繁に再作成します。

56
Can Poyrazoğlu

.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>
102

私は 受け入れられた答え が言ったことをしなければなりませんでしたが、代わりにProperties/PublishProfiles/__THEPROFILE__.pubxmlファイルではなく.csprojファイル。

(これはVS2012を使用しているためか?)

15
drzaus

WiXセットアップ用に外部でWebプロジェクトパッケージを Travis Illigに従って作成しようとしたときに、同様の問題が発生しました手順AutoParameterizationWebConfigConnectionStrings=FalseMSBuild/@Propertiesに追加して解決しました:

<MSBuild Projects="%(ProjectReference.FullPath)"
         Targets="Package"
         Properties="Configuration=$(Configuration);Platform=AnyCPU;AutoParameterizationWebConfigConnectionStrings=False"
         Condition="'%(ProjectReference.WebProject)'=='True'"
5
Ryszard Dżegan