$(ProjectName) 和 $(TargetName) MSBuild 宏不起作用

Iva*_*van 6 c# msbuild visual-studio-2015

我正在使用 Visual Stduio 2015 社区版。我已经加载了一个 C# 项目,并希望将其配置为使用影子构建,以便源文件不会与任何二进制文件或中间构建文件混淆。尝试使用 VS UI 设置 C# 项目的 [输出]/[中间输出] 目录路径 - 唯一可编辑 UI 的输出路径是“bin”路径,并且它不接受MSBuild 宏。然后我卸载了该项目并手动编辑它。还要设置 IntermediateOutputPath,当使用 C# 项目时,它在 VS UI 中不可用,但当使用 C++ 时,所有此类目录都是可编辑的。目前,OutputPath 设置为: <OutputPath>$(SolutionDir)..\build_$(SolutionName)_$(Configuration)_$(Platform)\$(ProjectName)</OutputPath>

$(ProjectName)由于某种原因是空的。尝试过$(TargetName)(仅用于测试而使用它是不正确的),但它也是空的。有什么建议么?

Ste*_*rka 2

问题在于,某些 MSBuild 属性(例如 ProjectName)是在 .csproj 文件中的以下行之后设置的。

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
Run Code Online (Sandbox Code Playgroud)

在此行之后您可以访问所有变量。

  • 是的,并且*[不要使用`$(ProjectDir)`,而是使用`$(MSBuildProjectDir`)](/sf/ask/185316141/ -属性/2652555#2652555)*。 (2认同)