使用$(SolutionDir)与.csproj文件中的msbuild错误的奇怪行为

时间:2010-11-24 17:25:03

标签: msbuild

我有一个.sln解决方案文件,该文件引用了一个.csproj项目文件,该文件具有以下内容的后构建任务:

<PropertyGroup>
    <PostBuildEvent>
        xcopy $(SolutionDir)\dir1\Somefle.xml  $(ProjectDir) /Y /I
    </PostBuildEvent>
</PropertyGroup>

使用msbuild构建解决方案,其任务如下:

<Target Name="CompileSolution">
    <MSBuild Projects="@(SolutionToBuild)" Targets="Rebuild" Properties="Platform=Any CPU" />
</Target>

现在这里有一个奇怪的部分:

如果我:

  1. 运行构建脚本(例如c:\ MyWorkingCopy)
  2. 重命名工作副本文件夹(例如c:\ YourWorkingCopy)
  3. 再次运行构建脚本
  4. 在第3步,xcopy将失败,因为它将尝试从“c:\ MyWorkingCopy”复制文件 - 当然这不是解决方案文件所在的位置。

    为什么msbuild使用旧的Solution目录?有没有办法重置它?

    (我使用的是.NET Framework 3.5)

1 个答案:

答案 0 :(得分:2)

它可能与构建sln文件时由msbuild创建的sln.cache文件有关(它是从sln文件构建的临时proj文件),如果它存在或sln未被修改sln文件.cache文件可能会被使用...我真的不知道,但我觉得它可以帮助。