默認情況下,目標管理轉變(TransformWebConfig
)只在web.config
文件的工作。
爲了讓您appSettings.config
文件工作,你就必須:
- 設置你的文件的
Build Action
到Content
- 調用的MSBuild目標
TransformWebConfig
與ProjectConfigFileName=appSettings.config
和Configuration=$(Configuration)
。
要只是web.config
文件轉換後調用的MSBuild TransformWebConfig
目標appSettings.config
,你需要在你的項目文件的最後補充一點:
<PropertyGroup>
<!-- Name of your custom config file -->
<ConfigFileName>appSettings.config</ConfigFileName>
</PropertyGroup>
<PropertyGroup>
<!--
This property is used to handle circular dependency between
TransformWebConfig and our custom target TransformAppConfig
-->
<FirstRun Condition="$(FirstRun) == ''">true</FirstRun>
</PropertyGroup>
<!-- This target will be called one time after a call to TransformWebConfig -->
<Target Name="TransformAppConfig"
AfterTargets="TransformWebConfig"
Condition="$(FirstRun) == 'true'">
<MSBuild Projects="$(MSBuildProjectFile)"
Targets="TransformWebConfig"
Properties="ProjectConfigFileName=$(ConfigFileName);
Configuration=$(Configuration);
FirstRun=false"/>
</Target>
<!--
This target will be called one time before PreAutoParameterizationWebConfigConnectionStrings
to add $(ConfigFileName) to autoparameterization step
-->
<Target Name="AddToAutoParameterizationStep"
BeforeTargets="PreAutoParameterizationWebConfigConnectionStrings">
<ItemGroup>
<_WebConfigsToAutoParmeterizeCS Include="@(FilesForPackagingFromProject)"
Condition="('%(FilesForPackagingFromProject.Filename)%(FilesForPackagingFromProject.Extension)'=='$(ConfigFileName)') And !%(FilesForPackagingFromProject.Exclude)">
<TransformOriginalFile>$(AutoParameterizationWebConfigConnectionStringsLocation)\original\%(DestinationRelativePath)</TransformOriginalFile>
<TransformOutputFile>$(AutoParameterizationWebConfigConnectionStringsLocation)\transformed\%(DestinationRelativePath)</TransformOutputFile>
<TransformScope>$(_PackageTempDir)\%(DestinationRelativePath)</TransformScope>
</_WebConfigsToAutoParmeterizeCS>
<_WebConfigsToAutoParmeterizeCSOuputFiles Include="@(_WebConfigsToAutoParmeterizeCS->'%(TransformOutputFile)')">
</_WebConfigsToAutoParmeterizeCSOuputFiles>
</ItemGroup>
</Target>
這似乎確實起作用。我的appSettings.config文件已轉換,但在部署期間,最終的配置文件未放入輸出文件夾。 – 2010-05-11 17:02:22
我更新了代碼,使用BeforeTarget和AfterTarget,而不是重寫TransformWebConfig dependson目標,並處理自動參數化步驟。現在你自定義的配置文件應該在輸出文件夾與web.config – 2010-05-12 09:00:50
我也試過你的解決方案。像@Wallace Breza一樣,它看起來很有效:我可以在obj \ $(Configuration)\ TransformWebConfig \轉換中看到已轉換的EntLib.config文件,但未部署。我嘗試過使用(右鍵單擊項目)> Publish ...(發佈方法:文件系統)方法,並使用Project> Build Deployment Package,然後在另一臺機器上運行。兩者都以原始形式將EntLib.config和EntLib。($ Configuration).config文件放在一起。 – SGarratt 2011-03-12 14:37:08