【问题标题】:Visual Studio user-defined property sheet macros in C#C# 中的 Visual Studio 用户定义属性表宏
【发布时间】:2014-08-08 12:05:53
【问题描述】:

我继承了一个 C# 解决方案,其中项目具有配置的“构建后命令行”。在此命令行中,有几个用户定义的属性表宏,可将各种输出文件复制到特定文件夹。但是,当我构建任何项目时,宏被错误地定义为空字符串。

例如

copy "$(TargetPath)" "$(PluginPath)\$(ConfigurationName)"

标准宏,例如$(TargetPath),很好用,但我看不到任何控制用户定义宏值的方法。在构建后步骤中,有一个“宏 >>”按钮显示标准宏,但我无法编辑它们的值或添加新的用户定义宏。

看起来以前的开发人员已经完成了这项工作,所以我错过了什么?

我读过宏可以在 .vsprops 文件中定义,但只有 Visual C++ 项目支持这些文件。当我查看“属性管理器”窗口时,我只看到消息“未加载任何 Visual C++ 项目”。 (我希望用户定义的属性表宏在 C++ 项目的“构建后命令行”中与在 C# 或任何语言的项目中一样有用。)

【问题讨论】:

    标签: c# visual-studio macros


    【解决方案1】:

    通过快速搜索,我找到了this,它可能会有所帮助。

    更新: 将以下内容添加到我的 .csproj 项目文件后,我可以在构建后命令行中使用 PluginPath 作为宏,使用 copy "$(TargetPath)" "$(PluginPath)\$(ConfigurationName)"(在 Visual Studio 2008 中测试)

        ...
        <PluginPath>C:\apps\</PluginPath>
    </PropertyGroup>
    

    【讨论】:

    • 优秀。正是我需要的。我还发现,为了避免直接编辑项目文件,可以将宏添加到单独的 .csproj.user 文件中,因此整个文件很简单:&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&gt; &lt;PropertyGroup&gt; &lt;ProjectView&gt;ShowAllFiles&lt;/ProjectView&gt; &lt;PropertyName&gt;the property value&lt;/PropertyName&gt; &lt;/PropertyGroup&gt; &lt;/Project&gt; 注意:更改后文件,项目需要重新加载。
    • 我知道这有点老了,但该宏是否应该在“编辑后构建”对话框的宏列表中可见?我能够添加自己的宏,但我想加入列表。
    【解决方案2】:

    您可以按照以下描述的任何解决方案进行操作。

    1. 创建批处理文件并插入以下代码

      设置 MY_INCLUDES_DIR=D:\MyIncludes 调用“C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat” "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" D:\MySolution.sln

    双击此文件启动 Visual Studio 解决方案。此解决方案的优点是所有项目都可以使用相同的环境变量。

    1. 在 Visual Studio 项目文件中定义以下 xml 标签。

      <PropertyGroup>
          <MY_INCLUDES_DIR>D:\MyIncludes\</MY_INCLUDES_DIR>
      </PropertyGroup>
    2. 创建名为 MY_INCLUDES_DIR 的系统环境变量,并在 Visual Studio 中简单地使用 $(MY_INCLUDES_DIR)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 1970-01-01
      相关资源
      最近更新 更多