Visual Studio 可以像 app.config 一样自动调整其他文件的名称吗?

2023-11-21

将应用程序配置文件添加到 Visual Studio 中的 .Net 项目时,它将被命名为app.config并将被重命名(在构建时)为ApplicationName.config.

我有一个包含大约 40 个项目的解决方案。我想为其中一些添加 log4net 功能。所以对于每个项目我都会添加一个文件app.log4net。然后我会声明一个像这样的构建后事件:

copy $(ProjectDir)app.log4net $(TargetPath).log4net

效果很好。但我想知道是否有一种内置方法可以在没有明确的构建后事件的情况下实现相同的目的。

编辑:虽然我喜欢 JaredPar 和 Simon Mourier 提出的两种解决方案,但它们没有提供我所希望的。为此使用自定义工具或 MsBuild 规则使其不太透明(对于项目中的其他程序员而言),或者至少比使用我当前使用的构建后事件更复杂。尽管如此,我觉得 MsBuild 会是correct解决类似问题的地方。


在这种情况下,更新 app.config 名称的不是 Visual Studio,而是独立于 Visual Studio 的核心 MSBuild 规则。如果您想模拟 app.config 模型,这是您应该采取的方法

控制 app.config 复制的构建序列的两个部分位于 Microsoft.Common.targets 中。

首先计算文件名

<ItemGroup>
    <AppConfigWithTargetPath Include="$(AppConfig)" Condition="'$(AppConfig)'!=''">
        <TargetPath>$(TargetFileName).config</TargetPath>
    </AppConfigWithTargetPath>
</ItemGroup>

接下来它实际上被复制为构建的一部分

<Target
    Name="_CopyAppConfigFile"
    Condition=" '@(AppConfigWithTargetPath)' != '' "
    Inputs="@(AppConfigWithTargetPath)"
    Outputs="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')">

    <!--
    Copy the application's .config file, if any.
    Not using SkipUnchangedFiles="true" because the application may want to change
    the app.config and not have an incremental build replace it.
    -->
    <Copy
        SourceFiles="@(AppConfigWithTargetPath)"
        DestinationFiles="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')"
        OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
        Retries="$(CopyRetryCount)"
        RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
        UseHardlinksIfPossible="$(CreateHardLinksForAdditionalFilesIfPossible)"
        >

        <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>

    </Copy>

</Target>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio 可以像 app.config 一样自动调整其他文件的名称吗? 的相关文章

随机推荐

  • 如何将 ScrollViewer 放置在它应该滚动的内容之上

    我想以这样的方式放置我的 ScrollViewer 使其重叠 位于其滚动的内容之上 我将设置 ScrollViewer 的不透明度 以便内容在下面可见 据我了解默认的 ScrollViewer 这似乎不可能开箱即用 因为内容嵌套在 Scro
  • 如何建议追加包含字符串的组合框

    Goal 我想让我的 ComboBox 项目在其中包含某些内容时建议并附加其项目 而不仅仅是通过 StartsWith 函数 我的 ComboBox 绑定到包含客户端的 DataView 公司名称 Address City 在一个长连接中
  • C++ 参数包扩展与概念

    如果取消注释行 1 和注释行 2 为什么会出现编译错误 演示 https godbolt org z KW6dhsrKd include
  • HTML5 Canvas 亮度控制

    我想实现一个滑块控件来更改图像的亮度 很像此链接中显示的控件 但通过 HTML5 Canvas 实现 http camanjs com examples 我想通过使用 html 上的输入滑块并在 JavaScript 上定义来控制图像的亮度
  • Swift - 如何将视图控制器的引用传递给子 UIView 类?

    我里面有一个 UIViewController 和一个 UIView 当我尝试在 UIView 内添加警报时 我必须使用控制器来呈现 UIAlertController 如何将 UIViewController 的引用传递给 UIView
  • 这段代码的空间复杂度是多少?

    int f int n if n lt 1 return 1 return f n 1 f n 1 我知道时间复杂度是O 2 n 我明白为什么 但我不明白为什么空间复杂度是O n 有人告诉我这是因为在任何给定时间只有n节点 但这对我来说没有
  • double 和 ffast-math 的自动矢量化

    为什么强制使用 ffast math与 g 实现循环的向量化double是 我不喜欢 ffast math因为我不想失去精度 你不一定会失去精度 ffast math 只影响处理NaN Inf等以及操作执行的顺序 如果您有一段特定的代码 您
  • 在java中加载freemarker模板时出现FileNotFoundException

    加载 freemarker 模板时出现文件未找到异常 即使该模板实际上存在于路径中 更新 这是作为网络服务运行的 它将根据搜索查询向客户端返回 xml 当我从另一个 java 程序 从静态主程序 调用模板时 模板加载成功 但是当客户端请求x
  • 如何使用带有 url 和基本身份验证凭据的 scrapy shell?

    我想用scrapy shell并测试需要基本身份验证凭据的 url 响应数据 我尝试检查 scrapy shell 文档 但在那里找不到它 我尝试过scrapy shell http user email protected 但没有成功 有
  • 使用 h:selectBooleanCheckbox 显示/隐藏其他输入字段

    我正在使用 JSF2 和 Java 构建 Web 应用程序 我想构建一个如下图所示的表单 When somebody unchecks the checkbox the form should disappear Here是一个 gwt 的
  • 如何更改 Sublime Text 中的选项卡名称?

    是否可以更改具有奇怪名称的文件的选项卡名称 它们无法在磁盘上重命名 但在 Sublime 中很难跟上疯狂的文件名 D 在 ST 控制台中输入view set name My changed name 将字符串的内容替换为您想要的名称 您还可
  • 清除单元格谷歌工作表脚本

    我在 googlesheet 上有一张表 其中有很多行和列 我想清除 B 列中值为 0 的单元格 我写了这段代码 但它不起作用 我不是 javascript 专家 function clean0 var sheet SpreadsheetA
  • 忽略库内抛出和捕获的异常

    我使用的 Python 标准库和其他库 例如 PyQt 有时会在非错误条件下使用异常 除了函数之外看下面os get exec path 它使用多个try用于捕获在尝试查找某些环境数据时引发的异常的语句 try path list env
  • 在 Python 中使用命令行参数:了解 sys.argv [重复]

    这个问题在这里已经有答案了 我目前正在学习 艰难地学习Python 我认为这个例子可能已经过时了 所以我想在这里得到反馈 我正在使用Python 3 1 from sys import argv script first second th
  • ValueError:Python 字典中无法解压的值太多[重复]

    这个问题在这里已经有答案了 我有一个接受字符串 列表和字典的函数 def superDynaParams myname likes relatives n is a list and n is dictionary print print
  • JavaScript - 字符串正则表达式反向引用

    您可以在 JavaScript 中像这样反向引用 var str 123 test 123 str str replace a z gi 2 这将 非常愚蠢 用 test 替换 test 但想象一下我想将 2 的结果字符串传递给一个函数 该
  • 如何在 IE9 中使用 MSHTML 的 addEventListener 添加事件侦听器?

    MSDN 文档为addEventListener表示它接受以下形式的回调函数IDispatch 目的 从 C 我使用 COM 互操作 Visual Studio 将参数类型显示为object 我找了一个IEventListener界面或类似
  • C# 从字符串中解析浮点数

    我正在从 XML 文件中读取数字 其他数字带有逗号分隔符 0 1111 其他数字带有点 0 1111 我如何解析这些数字才能最终得到所需的结果 我尝试使用float Parse reader Value System Globalizati
  • VisualSVN 服务器 3.2 - 意外的 HTTP 状态 405

    我在计算机上安装了 VisualSVN Server 以进行源代码控制 当我尝试通过存储库浏览器访问它时 出现错误 Unexpected HTTP Status 405 Method Not Allowed on 23WEB view he
  • Visual Studio 可以像 app.config 一样自动调整其他文件的名称吗?

    将应用程序配置文件添加到 Visual Studio 中的 Net 项目时 它将被命名为app config并将被重命名 在构建时 为ApplicationName config 我有一个包含大约 40 个项目的解决方案 我想为其中一些添加