在另一个msbuild文件中导入msbuild文件时出现工作目录问题

在另一个msbuild文件中导入msbuild文件时出现工作目录问题,msbuild,import,path,csproj,Msbuild,Import,Path,Csproj,我试图通过扩展现有的msbuild文件(web application.csproj文件),为msbuild文件指定一些附加目标/任务。其想法是将特定于配置的任务放在这个“扩展ms构建文件”中,并在构建服务器(TeamCity)中使用这个文件。我最初试图解决此问题的方法是将文件夹“msbuildscripts”添加到我的web项目中,并将扩展的ms build文件放在其中: <?xml version="1.0" encoding="utf-8" ?> <Project Too

我试图通过扩展现有的msbuild文件(web application.csproj文件),为msbuild文件指定一些附加目标/任务。其想法是将特定于配置的任务放在这个“扩展ms构建文件”中,并在构建服务器(TeamCity)中使用这个文件。我最初试图解决此问题的方法是将文件夹“msbuildscripts”添加到我的web项目中,并将扩展的ms build文件放在其中:

<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
  <Import Project="../My.Web.csproj" />
  ...more stuff...
</Project>
现在,这将不起作用,因为在导入原始ms构建文件时,该csproj文件将在“错误”文件夹(msbuildscripts)中“执行”,并且csproj构建文件将找不到其引用的任何文件夹/项


有没有办法告诉msbuild.exe使用特定的工作目录?我知道可以使用execute任务解决此问题,但这似乎不是一个好的解决方案。

像这样使用MSBuild任务:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="MyBuild">

<ItemGroup>
 <ProjectToBuild Include="../My.Web.csproj" />
</ItemGroup>

<Target Name="MyBuild">
 <MSBuild Targets="Build" Projects="@(ProjectToBuild)"></MSBuild>
</Target>
</Project>

像这样使用MSBuild任务:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="MyBuild">

<ItemGroup>
 <ProjectToBuild Include="../My.Web.csproj" />
</ItemGroup>

<Target Name="MyBuild">
 <MSBuild Targets="Build" Projects="@(ProjectToBuild)"></MSBuild>
</Target>
</Project>


工作正常,但是我使用了“ProjectReference”而不是“ProjectToBuild”,因为该元素在架构中,但似乎两个选项都可以工作。任何适合xml标记的标识符在这里都是完全有效的,不管它是否在架构中。它在模式中仅用于专有csproj文件,我不建议重用它,因为它位于intellisence的模式中。可以很好地工作,但是我使用了“ProjectReference”而不是“ProjectToBuild”,因为该元素位于模式中,看起来这两个选项都可以工作。任何适合xml标记的标识符在这里都是完全有效的,不管它是否位于模式中。它在模式中仅用于专有csproj文件,我不建议重用它,因为它位于intellisence模式中。