$(SolutionDir) MSBuild 属性 当 运行 Sandcastle Help File Builder 通过 CMD 时不正确
$(SolutionDir) MSBuild property incorrect when running Sandcastle Help File Builder via CMD
当我使用 Windows CMD 运行 Sandcastle Help File Builder 项目文件(例如,myproject.shfbproj
)时,我遇到了一个恼人的问题:$(SolutionDir)
有与 $(ProjectDir)
相同的值,这意味着项目文档源无法正确构建,因为我正在添加已经使用 $(SolutionDir)
.
的自定义目标
如果我从 Visual Studio 构建整个 Sandcastle Help File Builder,它会成功构建。
我正在使用以下命令(从存储项目的目录执行):
"C:\Program Files (x86)\MSBuild.0\Bin\MSBuild.exe" /p:Configuration=Development myproject.shfbproj
有解决办法吗?
只有在构建解决方案(.sln 文件)时,您才能得到正确的 $(SolutionDir)
。 .shfbproj
是一个项目文件,因此没有对其父解决方案的引用。您可以尝试在命令行中明确指定 $(SolutionDir)
:
msbuild /p:Configuration=Development /p:SolutionDir=MySolutionDir myproject.shfbproj
虽然 @m0sa 指出了一个非常明显的事实(因为我正在构建 Sandcastle Help File Builder 项目,所以没有实际的解决方案目录),但在构建解决方案时,在 TFS Build 期间也发生了这个问题所谓的文档项目驻留。
现在我已经设法使用 讨厌的 解决方法解决了这个问题:在每个需要的 C# 项目中添加 SolutionDir
属性作为文档项目的一部分构建:
<PropertyGroup>
<SolutionDir>$([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory)))\</SolutionDir>
</PropertyGroup>
由于我的解决方案文件将始终位于 Sandcastle Help File Builder 项目目录的父目录中,因此在我的情况下,此解决方法有效...
现在作为文档源引用的项目能够导入自定义项目,我在其中定义了通用 MSBuild 属性,在 Visual Studio 构建或外部构建中:
<Import Project="$(SolutionDir)MSBuild\Common.properties" />
当我使用 Windows CMD 运行 Sandcastle Help File Builder 项目文件(例如,myproject.shfbproj
)时,我遇到了一个恼人的问题:$(SolutionDir)
有与 $(ProjectDir)
相同的值,这意味着项目文档源无法正确构建,因为我正在添加已经使用 $(SolutionDir)
.
如果我从 Visual Studio 构建整个 Sandcastle Help File Builder,它会成功构建。
我正在使用以下命令(从存储项目的目录执行):
"C:\Program Files (x86)\MSBuild.0\Bin\MSBuild.exe" /p:Configuration=Development myproject.shfbproj
有解决办法吗?
只有在构建解决方案(.sln 文件)时,您才能得到正确的 $(SolutionDir)
。 .shfbproj
是一个项目文件,因此没有对其父解决方案的引用。您可以尝试在命令行中明确指定 $(SolutionDir)
:
msbuild /p:Configuration=Development /p:SolutionDir=MySolutionDir myproject.shfbproj
虽然 @m0sa 指出了一个非常明显的事实(因为我正在构建 Sandcastle Help File Builder 项目,所以没有实际的解决方案目录),但在构建解决方案时,在 TFS Build 期间也发生了这个问题所谓的文档项目驻留。
现在我已经设法使用 讨厌的 解决方法解决了这个问题:在每个需要的 C# 项目中添加 SolutionDir
属性作为文档项目的一部分构建:
<PropertyGroup>
<SolutionDir>$([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory)))\</SolutionDir>
</PropertyGroup>
由于我的解决方案文件将始终位于 Sandcastle Help File Builder 项目目录的父目录中,因此在我的情况下,此解决方法有效...
现在作为文档源引用的项目能够导入自定义项目,我在其中定义了通用 MSBuild 属性,在 Visual Studio 构建或外部构建中:
<Import Project="$(SolutionDir)MSBuild\Common.properties" />