2011-08-26 15 views
53

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

あなたが言う前に:はい、元のディレクトリから元のweb.configをコピーできますが、これに対処する必要はありません。ワンクリックで終了します。私はパブリッシュパッケージをテストしており、頻繁にパッケージを再作成しています。

答えて

98

あなたの.csprojファイルを編集する必要がデバッグPropertyGroupには、次を追加する必要があります:

<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings> 

私は私のプロジェクトでリリースReleaseCERT設定で次のように持っています。代わりで、

<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

感謝を - 任意のアイデアを*我々が持っている*なぜこれを行うには? – Mustafakidd

+1

@Mustafakiddは、(MSBuildを使用して)プロジェクトをビルドするたびに呼び出されるmsdeployパッケージに関連しています。 ReplacableTokenは、(.csproj/.vsprojにTransformXmlタスクを使用して)デプロイするときにのみ置き換える必要があります。詳細はこちら:http://stackoverflow.com/questions/4750153/transforming-files-with-msdeploy –

+0

ダミーのconn文字列変換をWeb.Debug.configまたはWeb.Release.configに追加することができます。 – Justin

15

私はaccepted answerが言ったことをしなければならなかった。csproj(私だけAutoParameterizationWebConfigConnectionStringsラインを追加しました) .csprojファイルではなく、Properties/PublishProfiles/__THEPROFILE__.pubxmlファイルです。

(私はVS2012を使用していますので、これはできますか?)

+0

VS 2015でも同じです。 – nzpcmad

-2

私は私のProject.csprojファイルのRelease条件セクションに以下を追加する必要がありました:

<InsertAdditionalWebCofigConnectionStrings>False</InsertAdditionalWebCofigConnectionStrings> 
+0

問題を修正しませんでした。あなたが提供したXMLタグのスペルが間違っている可能性があります。このように綴らなければならないようです... InsertAdditionalWebConfigConnectionStringsではなくInsertAdditionalWebCofigConnectionStrings いずれにせよ、これは私のためには機能しませんでした。 –

4

私は場合にも、同様の問題がありました私はTravis Illig instructionsに従ってWiXの設定のために外部にWebプロジェクトパッケージを作成しようとしていました。私はAutoParameterizationWebConfigConnectionStrings=FalseMSBuild/@Propertiesに追加することによってそれを解決:ソリューションの

<MSBuild Projects="%(ProjectReference.FullPath)" 
     Targets="Package" 
     Properties="Configuration=$(Configuration);Platform=AnyCPU;AutoParameterizationWebConfigConnectionStrings=False" 
     Condition="'%(ProjectReference.WebProject)'=='True'" 
+1

+1デプロイされたプロジェクトの設定ではなく、デプロイメントロジックのみを調整する必要がないため、これはこの特定の場合の適切な解決策です。 –

関連する問題