- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于基于 Visual Studio 2010 Web 的应用程序,我们具有配置转换功能,通过该功能我们可以为不同的环境维护多个配置文件。但相同的功能不适用于 Windows 服务/WinForms 或控制台应用程序的 App.Config 文件。
这里建议有一个解决方法:Applying XDT magic to App.Config .
然而,这并不简单,需要执行许多步骤。有没有更简单的方法可以对 app.config 文件实现相同的效果?
最佳答案
我尝试了几种解决方案,这是我个人发现的最简单的解决方案。
Dan评论中指出the original post属于Oleg Sych -谢谢,奥列格!
以下是说明:
<强>1。将每个配置的 XML 文件添加到项目中。
通常,您将拥有 Debug
和 Release
配置,因此将文件命名为 App.Debug.config
和 App.Release.config
。在我的项目中,我为每种环境创建了一个配置,因此您可能想尝试一下。
<强>2。卸载项目并打开.csproj文件进行编辑
Visual Studio 允许您直接在编辑器中编辑 .csproj 文件 - 您只需先卸载项目即可。然后右键单击它并选择编辑
<强>3。将 App.*.config 文件绑定(bind)到主 App.config
找到包含所有 App.config
和 App.*.config
引用的项目文件部分。您会注意到他们的构建操作设置为None
,没关系:
<None Include="App.config" />
<None Include="App.Debug.config" />
<None Include="App.Release.config" />
接下来,使所有配置特定文件依赖于主App.config
,以便 Visual Studio 将它们分组,就像设计器和代码一样- 后面的文件。
将上面的 XML 替换为下面的 XML:
<None Include="App.config" />
<None Include="App.Debug.config" >
<DependentUpon>App.config</DependentUpon>
</None>
<None Include="App.Release.config" >
<DependentUpon>App.config</DependentUpon>
</None>
<强>4。激活转换魔法(对于 VS2019 等 Visual Studio 版本仍然必需)
在文件末尾之后
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
决赛前
</Project>
插入以下 XML - 请注意要进行正确的转换需要两个步骤:
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="BeforeBuild" Condition="Exists('App.$(Configuration).config')">
<!-- Generate transformed app config and replace it: will get the <runtime> node and assembly bindings properly populated -->
<TransformXml Source="App.config" Destination="App.config" Transform="App.$(Configuration).config" />
</Target>
<Target Name="AfterBuild" Condition="Exists('App.$(Configuration).config')">
<!-- Generate transformed app config in the intermediate directory: this will transform sections such as appSettings -->
<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>
现在您可以重新加载项目,构建它并享受 App.config
转换!
仅供引用
确保您的 App.*.config
文件具有如下正确设置:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<!--magic transformations here-->
</configuration>
关于visual-studio - Visual Studio 中非 Web 项目的项目的 App.Config 转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3004210/
我喜欢在 Lisp、Python 或 JavaScript 等(通常是动态的)语言中可以使用 boolean 运算符而不是条件来编写的简洁代码,如典型的: x = someString or "def
具体来说,我将 WPF 与 MVVM 一起使用。我有一个 MainWindow,它是一个 WPF 窗口,所有操作都在其中发生。它为其属性、命令等使用相应的 View 模型类。 我在 Applicati
对于我从 VB6 移植的应用程序,我有几个关于 CLS 合规性的烦人的编译器警告,包括: Name '_AnIdentifier' is not CLS-Compliant. Type of para
Module Unix 包含 time 函数来获取自 Epoch 以来的秒数,但是是否有一种独立于平台的方式来获取相同的值并确保代码在非-Unix 部署? 最佳答案 尽管有它的名字,Unix modu
我有一个 R 函数,它试图将每个“单词”的第一个字母大写 proper = function(x){ gsub("(? proper("Māori") [1] "MāOri" 显然,RE 引擎认为
我有一个包含两列的表格。一个是 auto_increment 说 columnA 而另一个是非 auto_increment 说 columnB。我想在 columnB 中执行两种类型的插入操作: 插
我遇到了这个错误,但无法调试它 helpers.c:136:1: error: control may reach end of non-void function IDE 在最后一行中说} 这是我的
我想检查一个数组在 C 中是否按 acs 或 desc 顺序排序。这是使用 mpicc -Wall -o file file.c 编译的结果,因为我稍后在代码中使用 MPI 库。 mypractice
我想了解编译器对 C 中的非 volatile 变量有哪些限制(如果有的话)。 我不确定这是否属实,但有人告诉我,如果您有以下代码: int x; ... void update_x() { lo
我的代码在 IE 中有效,但在 Firefox 中无效。我试图让 onmousedown 和 onmouseup 事件以及 swapFE、swapEF 和 setUpTranslation 函数在 I
我的问题是.. 是否可以在非 root 设备上静默自动更新应用程序?如果设备已 Root ,则它会使用 super 用户权限更新我的应用程序,否则不会。请回复谢谢! 最佳答案 无法在非 Root 设备
阅读了 PropertyAnimator 的文档后,似乎只要满足以下条件之一,我们就可以为每个对象设置动画, 如果您有权限,请将 setter 方法添加到类中。 使用您有权更改的包装器类,并让该包装器
所以我正在制作移动应用程序,并希望使用相同的 URL 创建链接以激活 iOS 和 Android 中的内容。我已经知道该怎么做了。我对 android 的 Intent 是这样的:
这个问题很接近我的问题,但又不完全是:List minimum in Python with None? .我需要考虑到列表中所有值都为 None 的可能性。 我有一种情况,我必须在数据库中查找一些数
如何从 Pandas 数据框中获取非“NaN”值的索引? 我的数据框是 A b c 0 1 q1 1 1 2 NaN 3 2 3 q2
对于数据框 df = pd.DataFrame([[np.nan, 3.0, 7.0], [0.0, 5.0, 8.0], [0.0, 0.0, 0.0], [1.0, 3.0, np.nan], [
我在 Android 中播放视频之前对其进行解密。当我解密它时,我想将它存储在 Android 私有(private)文件夹中,这样其他应用程序和用户就无法访问它 - 我已经查找了一些看起来像这样的代
我有一个非常大的 csv 文件,如下所示: 关键词,印象 下载 juegos gratis,951 パソコン kakaku com,451 公司 session ,155 租车,356
我有一个继承自 AbstractType 的表单生成器类,我需要解析如下路径: $uri = $router->generate('blog_show', array('slug' => 'my-bl
我想从 Android 应用程序中的一个原始文本文件中读取一些文本,并在应用程序中显示该文本文件中的一行。小部件。 对于 MainActivity,我编写了一个使用以下代码获取 InputStream
我是一名优秀的程序员,十分优秀!