SolutionDir set to *Undefined* in post-build xcopy event

假装没事ソ 提交于 2019-12-12 08:26:26

问题


I have a project that has a post-build event that xcopies a DLLs to a certain directory:

xcopy "$(TargetDir)$(TargetName).dll" "$(SolutionDir)..\UdpLocationService\bin\Plugins\" /d /y
xcopy "$(TargetDir)$(TargetName).pdb" "$(SolutionDir)..\UdpLocationService\bin\Plugins\" /d /y

However, I have CruiseControl.NET set up as a build server and MSBuild is failing on building that project due to this xcopy post-build event:

MSB3073: The command "xcopy "C:\Build\Services\Windows\VehicleServer\Plugins\Payload\bin\Debug\Payload.dll" "*Undefined*..\UdpLocationService\bin\Plugins\" /d /y xcopy "C:\Build\Services\Windows\VehicleServer\Plugins\Payload\bin\Debug\Payload.pdb" "*Undefined*..\UdpLocationService\bin\Plugins\" /d /y" exited with code 4. in Microsoft.Common.targets(3397, 13)

Any suggestions to get this fixed?


回答1:


Follow these steps:

  • Unload your project file (e.g. *.csproj)
  • Open your project file for editing
  • Find the AfterBuild target
  • Separate out the two invocations of XCopy into two distinct Exec tasks
  • Save your changes and Reload your project file



回答2:


I just ran into the same problem with TeamCity.

The issue here is the $(SolutionDir) property in your build file. You haven't defined it in your call to MsBuild (this is why you see the word undefined in your output).

Call msbuild with the property set, like this:

msbuild myproject.csproj /property:SolutionDir="solution directory"\

Where "solution directory" is the directory containing your solution file. Note the trailing slash, you'll need that to make sure the path is correctly formed.




回答3:


I fixed this for problems with the Microsoft.SqlServer.Compact nuget package (which adds a similar post-build script), by adding:

<SolutionDir Condition="'$(SolutionDir)'=='' or '$(SolutionDir)'=='*Undefined*'">..\</SolutionDir>

right above the <PostBuildEvent>. You'll want to adjust the relative path to match your project layout.



来源:https://stackoverflow.com/questions/3161232/solutiondir-set-to-undefined-in-post-build-xcopy-event

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!