.csproj文件中带有msbuild的$(SolutionDir)的奇怪行为是错误的
我有一个.sln解决方案文件,该文件引用了一个.csproj项目文件,该项目文件具有类似以下内容的生成后任务:.csproj文件中带有msbuild的$(SolutionDir)的奇怪行为是错误的,msbuild,Msbuild,我有一个.sln解决方案文件,该文件引用了一个.csproj项目文件,该项目文件具有类似以下内容的生成后任务: <PropertyGroup> <PostBuildEvent> xcopy $(SolutionDir)\dir1\Somefle.xml $(ProjectDir) /Y /I </PostBuildEvent> </PropertyGroup> xcopy$(SolutionDir)\dir1\
<PropertyGroup>
<PostBuildEvent>
xcopy $(SolutionDir)\dir1\Somefle.xml $(ProjectDir) /Y /I
</PostBuildEvent>
</PropertyGroup>
xcopy$(SolutionDir)\dir1\Somefle.xml$(ProjectDir)/Y/I
该解决方案是使用msbuild生成的,其任务如下:
<Target Name="CompileSolution">
<MSBuild Projects="@(SolutionToBuild)" Targets="Rebuild" Properties="Platform=Any CPU" />
</Target>
现在有一个奇怪的部分:
如果我:
(我使用的是.NET Framework 3.5)它可能与生成sln文件时由msbuild创建的sln.cache文件有关(它是从sln文件生成的临时项目文件),如果存在或未修改sln,则可以使用sln.cache文件。。。我真的不知道,但我认为这可能会有所帮助。在执行msbuild期间,是否在某处重命名工作副本文件夹名称?或者我遗漏了什么?可能msbuild创建了一个应该删除的缓存文件?不,msbuild不会创建任何具有属性的缓存文件。但是你没有回答。在您的方案中是否运行msbuild一次或两次?它可能与生成sln文件时由msbuild创建的sln.cache文件有关(它是从sln文件生成的临时项目文件),如果存在该文件或sln未修改,则可以使用sln.cache文件。。。我真的不知道,但我认为这会有帮助。@alpha-mouse:对不起,耽搁了,我已经离开几天了。我不会在执行msbuild期间重命名工作副本生成。我遇到的奇怪行为是,如果它运行一次,然后重命名/移动工作副本,然后再次运行msbuild。sln.cache文件确实在初始生成后挂起。移除它们解决了问题。