如何在csproj文件中访问宏变量?

7
在我的csproj文件中,我有一个不同的构建路径。
<BaseIntermediateOutputPath>C:\Temp\Build\MyProject</BaseIntermediateOutputPath>

在预建和后建事件中,我可以访问某些宏变量。

$(OutDir)
$(ProjectName)
$(ProjectPath)
$(SolutionDir)

我是否可以在我的csproj文件中使用这些变量?

例如,我尝试了以下内容但未成功。

<BaseIntermediateOutputPath>C:\Temp\Build\$(ProjectName)</BaseIntermediateOutputPath>
1个回答

6

我曾有类似需求,使用$(MSBuildProjectName)解决了我的问题。

  <PropertyGroup>
    <ProjectView>ProjectFiles</ProjectView>
    <BaseIntermediateOutputPath>R:\$(MSBuildProjectName)\obj\</BaseIntermediateOutputPath>
  </PropertyGroup>

这里的R是我的RAMDISK驱动器字母。
对于其他可能会遇到设置RAMDISK驱动器字母错误的人,我使用了一个简单的VBS脚本。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colVolumes = objWMIService.ExecQuery _
    ("Select * from Win32_Volume") Where Label = 'RAMDISK'")
For Each objVolume in colVolumes
    objVolume.DriveLetter = "R:"
    objVolume.Put_
Next

这可以确保任何加载了RAMDISK标签的驱动器都被设置为R:驱动器,而不是默认出现的驱动器。虽然这不属于您的问题,但我相信对于其他需要使用RAMDISK进行obj文件的人来说,这将非常方便,并且发现在vbproj / csproj文件中更改驱动器字母的情况很繁琐。
参考资料:
1. 保留属性:http://msdn.microsoft.com/en-us/library/ms164309%28loband%29.aspx 2. 更改驱动器字母:http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/disk/drives/

感谢您。还有,感谢您提供的 RAM 磁盘技巧。我已经设置了一个来提高构建速度。 - Valamas
4
非常有效!!我想强调你必须使用$(MSBuildProjectName)而不是$(ProjectName) - Gqqnbig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接