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

Val*_*mas 6 csproj visual-studio-2010

在我的csproj文件中,我有一个不同的构建路径.

<BaseIntermediateOutputPath>C:\Temp\Build\MyProject</BaseIntermediateOutputPath>
Run Code Online (Sandbox Code Playgroud)

在prebuild和post build事件中,我可以访问某些宏变量.

$(OutDir)
$(ProjectName)
$(ProjectPath)
$(SolutionDir)
Run Code Online (Sandbox Code Playgroud)

我可以在csproj中使用这些变量吗?

例如,我尝试了以下但没有成功.

<BaseIntermediateOutputPath>C:\Temp\Build\$(ProjectName)</BaseIntermediateOutputPath>
Run Code Online (Sandbox Code Playgroud)

小智 5

我有类似的要求,并使用$(MSBuildProjectName)为我完成了这项工作。

  <PropertyGroup>
    <ProjectView>ProjectFiles</ProjectView>
    <BaseIntermediateOutputPath>R:\$(MSBuildProjectName)\obj\</BaseIntermediateOutputPath>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

这里的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
Run Code Online (Sandbox Code Playgroud)

这样可以确保将任何带有标签RAMDISK的驱动器设置为R:驱动器,而不是显示的默认驱动器。尽管这不属于您的问题,但我确信这对其他有类似要求(将objs文件用于RAMDISK并在vbproj / csproj文件中更改驱动器字母的情况)的人会很方便。

参考文献:

  1. 保留的属性:http : //msdn.microsoft.com/zh-cn/library/ms164309%28loband%29.aspx
  2. 更改驱动器号:http : //www.activexperts.com/activmonitor/windowsmanagement/adminscripts/disk/drives/

  • 效果很好!我想强调一下,您必须使用$(MSBuildProjectName)而不是$(ProjectName)。 (3认同)