6

私の csproj ファイルには、別のビルド パスがあります。

<BaseIntermediateOutputPath>C:\Temp\Build\MyProject</BaseIntermediateOutputPath>

ビルド前およびビルド後のイベントでは、特定のマクロ変数にアクセスできます。

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

csproj 内でこれらの変数を使用できますか?

たとえば、次のことを試してみましたが成功しませんでした。

<BaseIntermediateOutputPath>C:\Temp\Build\$(ProjectName)</BaseIntermediateOutputPath>
4

1 に答える 1

5

同様の要件があり、 $(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: ドライブに設定されます。これはあなたの Q の一部ではありませんが、obj ファイルに RAMDISK を使用するという同様の要件があり、vbproj/csproj ファイルのドライブ文字を変更するのが面倒な場合に役立つと確信しています。

参考文献:

  1. 予約済みプロパティ: http://msdn.microsoft.com/en-us/library/ms164309%28loband%29.aspx
  2. ドライブ文字の変更: http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/disk/drives/
于 2012-02-26T07:34:08.893 に答える