Web項目中的Transformation使用起來非常方便,特別是本地與服務器情況不一致時調試下以及webdeploy的配合使用。
步驟:
1. 在項目中新建App.Debug.Config及App.Realse.Config文件
粘貼以下代碼到新建的Config文件中
<?xml version="1.0" encoding="utf-8"?> <!-- 有關使用 web.config 轉換的詳細信息,請訪問 http://go.microsoft.com/fwlink/?LinkId=125889 --> <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <!-- 在下例中,“SetAttributes”轉換將更改 “connectionString”的值,以僅在“Match”定位器 找到值為“MyDB”的特性“name”時使用“ReleaseSQLServer”。 <connectionStrings> <add name="MyDB" connectionString="Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings> --> <system.web> <!-- 在下例中,“Replace”轉換將替換 web.config 文件的整個 <customErrors> 節。 請注意,由於 在 <system.web> 節點下僅有一個 customErrors 節,因此不需要使用“xdt:Locator”特性。 <customErrors defaultRedirect="GenericError.htm" mode="RemoteOnly" xdt:Transform="Replace"> <error statusCode="500" redirect="InternalError.htm"/> </customErrors> --> </system.web> </configuration>
2. 右鍵項目→卸載項目,再次右鍵項目→編輯項目
3. 在XML中找到最後一個ProjectGroup節點,粘貼以下代碼
<PropertyGroup> <ProjectConfigFileName>App.config</ProjectConfigFileName> </PropertyGroup>
4. 找到ItemGroup節點,找到以下代碼
<ItemGroup> <None Include="App.config" /> </ItemGroup>
替換為
<ItemGroup> <None Include="App.config" /> <None Include="App.Debug.config"> <DependentUpon>App.config</DependentUpon> </None> <None Include="App.Release.config"> <DependentUpon>App.config</DependentUpon> </None> </ItemGroup>
5. 找到以下節點(一般在最下方)
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
在下方增加以下內容
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" /> <Target Name="AfterBuild"> <TransformXml Source="@(AppConfigWithTargetPath)" Transform="$(ProjectConfigTransformFileName)" Destination="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')" /> </Target>
6. 保存,重新載入項目,查看效果