【发布时间】:2015-02-05 16:06:38
【问题描述】:
我正在使用 Visual Studio Online 进行我的存储库和构建。这是我的 TFS 层次结构。
<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
我有一个解决方案 1 的构建定义,它成功构建,根据需要恢复 NuGet 包,没有问题。
解决方案 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”,那么它会成功清理并构建所有项目。
【问题讨论】:
标签: msbuild azure-devops