展開のために、web.configの設定を開発環境から運用環境に変更するツールを作成しました。つまり、ある場合を除いてうまく機能:web.configをプログラムによって変更します:section "buildProviders"
私はセクションが消えデバッグに偽、私のbuildProvidersを設定してみてください。
これは私のsystem.webセクションである:
<system.web>
<machineKey ... />
<compilation debug="true" strict="false" targetFramework="4.0">
<buildProviders>
<remove extension=".resx"/>
<remove extension=".resources"/>
</buildProviders>
<assemblies>
...
</assemblies>
</compilation>
、これは私の修正コードである:得られたweb.configファイルで
private void ChangeDebugSetting()
{
System.Configuration.Configuration configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
System.Web.Configuration.CompilationSection comp = (System.Web.Configuration.CompilationSection)configuration.GetSection("system.web/compilation");
comp.Debug = false;
configuration.Save();
}
buildProvidersセクションがありません。
デバッガでは、comp.BuildProvidersコレクションが空であることがわかります。ただし、保護されたプロパティbase.Itemsには、の2つの要素が含まれています。_entryType =削除されましたおよび_key = ".resx" resp。 _key = ".resources"。
「削除」の両方の要素が保存されるようにするにはどうすればよいですかweb.config?
なぜプロジェクトファイルでTransformXMLタスクを使用しないのですか?可能な解決策はこちら(https://visualstudiogallery.msdn.microsoft.com/579d3a78-3bdd-497c-bc21-aa6e6abbc859)を参照するか、ここで手動変換を使用してください:http://johan.driessen.se/posts/Applying-MSBuild-Config Visual Studioの拡張機能を使用しないでトランスフォーメーションからany-config-fileへ –
私は、実行時に特別なWebページを介していくつかのweb.config設定を変更するメカニズムをすでに持っているからです。 ASP.Netトレースのオン/オフ)。私は、デバッグをオン/オフに切り替えるのにこのメカニズムを使うこともできると思っていました。 (場合によっては、例外スタックトレースに行番号が必要です。) –