[英]My app.config did not transform the value
In my windows service application, I want to debug it by my configuration. 在Windows服务应用程序中,我想通过配置对其进行调试。 Originally I used slowcheetah, however it just did not work.
最初,我使用slowcheetah,但是它没有用。 So I wanted to manually to transform it.
所以我想手动对其进行转换。 There is a method to do it.
有一种方法可以做到这一点。
In the project file, I have 在项目文件中,我有
<ItemGroup>
<Content Include="App.config" />
<Content Include="App.Debug.config">
<DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="App.TestDebug.config">
<DependentUpon>App.config</DependentUpon>
</Content>
<Content Include="App.Release.config">
<DependentUpon>App.config</DependentUpon>
</Content>
<None Include="packages.config">
</None>
</ItemGroup>
Also I have 我也有
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterCompile" Condition="exists('app.$(Configuration).config')">
<!-- Generate transformed app config in the intermediate directory -->
<TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
<!-- Force build process to use the transformed configuration file from now on. -->
<ItemGroup>
<AppConfigWithTargetPath Remove="app.config" />
<AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
<TargetPath>$(TargetFileName).config</TargetPath>
</AppConfigWithTargetPath>
</ItemGroup>
</Target>
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
In App.TestDebug.config, the value is: 在App.TestDebug.config中,值是:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="veserver" value="xx.xx.xx.221" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
In App.Debug.config, the value is: 在App.Debug.config中,值是:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="veserver" value="xx.xx.xx.221" />
In App.config, the value is: 在App.config中,值是:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="veserver" value="xx.xx.xx.222" />
Now I debug it with 现在我用
App.TestDebug.config
App.TestDebug.config
In the C# code ConfigurationManager.AppSettings["veserver"]
is still 在C#代码中,
ConfigurationManager.AppSettings["veserver"]
仍然
xx.xx.xx.222 Which means that it didn't transform the value.
xx.xx.xx.222这意味着它没有转换值。 It is supposed to be xx.xx.xx.221
应该是xx.xx.xx.221
Why? 为什么?
Find a solution by myself. 自己寻找解决方案。
<ItemGroup>
<Content Include="App.config" />
<None Include="App.Debug.config">
<DependentUpon>App.config</DependentUpon>
</None>
<None Include="App.TestDebug.config">
<DependentUpon>App.config</DependentUpon>
</None>
<None Include="App.Release.config">
<DependentUpon>App.config</DependentUpon>
</None>
<None Include="packages.config">
</None>
Change 更改
Content
内容
to 至
None
没有
. 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.