Msbuild Visual Studio联机生成在依赖项目NuGet引用上失败
我正在使用Visual Studio Online进行回购和构建。这是我的TFS层次结构Msbuild Visual Studio联机生成在依赖项目NuGet引用上失败,msbuild,azure-devops,Msbuild,Azure Devops,我正在使用Visual Studio Online进行回购和构建。这是我的TFS层次结构 <ClassLibraries> │ ├───<Solution 1> │ └───Build.Proj │ └───.NuGet │ └───NuGet.exe
<ClassLibraries>
│
├───<Solution 1>
│ └───Build.Proj
│ └───.NuGet
│ └───NuGet.exe
│ └───NuGet.Config
│ └───NuGet.Targets
│ └───<Project 1> // Common Code
│ └───Project1.csproj
│ └───<Project 2> // Common Code Unit Test
│ └───Project2.csproj
│
├───<Solution 2>
│ └───Build.Proj
│ └───.NuGet
│ └───NuGet.exe
│ └───NuGet.Config
│ └───NuGet.Targets
│ └───<Project 3>
│ └───Project1.csproj
│ └───<Project 4>
│ └───Project2.csproj
│
├───
│ └───建筑工程
│ └───.努吉
│ └───NuGet.exe
│ └───NuGet.Config
│ └───努杰,目标
│ └─── // 通用代码
│ └───Project1.csproj
│ └─── // 公共代码单元测试
│ └───项目2.csproj
│
├───
│ └───建筑工程
│ └───.努吉
│ └───NuGet.exe
│ └───NuGet.Config
│ └───努杰,目标
│ └───
│ └───Project1.csproj
│ └───
│ └───项目2.csproj
我有一个解决方案1的构建定义,它能够成功地构建,并根据需要毫无问题地恢复NuGet包
Solution 2.sln文件包含解决方案1中的项目1作为依赖项,因为项目3和项目4都对其具有代码依赖项(解决方案1是我的通用代码解决方案,它几乎包含在所有内容中)
解决方案2的生成定义失败,因为它找不到项目1的NuGet依赖项。我猜Build.Proj中的RestorePackages目标忽略了依赖项目
<Target Name="RestorePackages">
<Exec Command="$(MSBuildThisFileDirectory).NuGet\NuGet.exe restore %(Solution.Identity)" />
</Target>
我不明白为什么。如果我在解决方案2上本地执行“msbuild build.proj”,则它会成功地清理和生成所有项目。我已经确定,在本例中,我的build.proj文件需要直接引用解决方案1:
<ItemGroup>
<Solution Include="$(MSBuildThisFileDirectory)*.sln" />
<Solution Include="$(MSBuildThisFileDirectory)..\Solution1\*.sln" />
</ItemGroup>
然后,这将导致MSBuild对依赖项目执行NuGet包还原。问题解决了。有点
在我删除了所有本地代码并从回购协议中获取最新信息后,我意识到VS2013展示了我最初看到的行为。因此,我现在需要研究如何以与我正在使用的build.Proj文件相同的方式生成IDE,该文件用于从命令行执行的VSO和msbuild