繁体   English   中英

C#Visual Studio项目属性和MSBuild宏

[英]C# Visual Studio Project Properties & MSBuild Macros

为什么我不能在C#项目的属性中使用MSBuild宏? 所有这些工作都可以在CPP项目中找到。

例如:

  • 创建一个空的C#控制台应用程序
  • 更改main方法以采用命令行参数
  • 右键单击解决方案资源管理器中的项目,然后单击属性
  • 选择左侧的“调试”
  • 在命令行参数中,输入:“ $(SolutionDir)”
  • 调试程序
  • 请注意,该参数实际上是$(SolutionDir)而不是其含义。

我对“ Xml文档文件路径”和其他字段有相同的问题。

为什么我不能在C#项目的属性中使用MSBuild宏? 所有这些工作都可以在CPP项目中找到。

这是因为C#和CPP项目引入宏的方式不同。

对于C#项目,它是由.props.targets文件引入的,例如Microsoft.CSharp.targets文件。 在项目文件.csproj您将找到以下导入:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

对于CPP项目,它是由属性表引入的,您可以从View > Other Windows > Property Manager获得它,而C#项目不支持。

不同之处:

您可以使用属性表来创建可应用于多个项目的项目配置,因为.vsprops文件中定义的项目设置是可继承的 ,这与项目文件(.vcproj文件)中定义的项目设置不同。 因此, .vcproj文件中定义的项目配置可以从一个或多个属性表(.vsprops文件)继承项目设置 有关更多信息,请参见属性继承。

因此,您可以在CPP项目的属性中使用MSBuild宏,但不能在C#项目中使用MSBuild宏的原因。

您可以检查以下文档以了解更多详细信息:

构建命令和属性的通用宏

属性表(C ++)

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM