单个项目文件无法了解它们所属的解决方案.变量$(SolutionDir),$(SolutionPath),$(SolutionExt)等,仅在构建.sln文件时定义,在直接构建项目时不会定义它们.
为了说明这一点,请将其放在项目文件中:
<Target Name="BeforeBuild">
<Message Text="SolutionDir=$(SolutionDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
构建解决方案时,您会得到:
>msbuild sln.sln
Microsoft (R) Build Engine version 12.0.31101.0
...
BeforeBuild:
SolutionDir=e:\temp\sln\
...
Run Code Online (Sandbox Code Playgroud)
直接构建项目时,您会得到:
>msbuild fs\fs.fsproj
Microsoft (R) Build Engine version 12.0.31101.0
...
BeforeBuild:
SolutionDir=*Undefined*
...
Run Code Online (Sandbox Code Playgroud)
如您所见,$(SolutionDir)严重受损.我不推荐使用它,以及其他$(Solution***)变量,因为您希望在某些时候直接构建项目,或者在其他目录中创建具有项目的不同子集的新.sln文件,然后你会遇到构建中断.
| 归档时间: |
|
| 查看次数: |
2934 次 |
| 最近记录: |