设置
我有一个解决方案Commons.sln
,其中包含其他更具体项目的常用工具。让我们来看一个名为Cars.sln
的特定解决方案,以便更容易探索案例。所有解决方案都有自己的NuGet包。
所有项目都放在同一个VCS分支中,因此文件夹结构非常严格。
我想要达到什么目标?
我想在所有特定项目中引用公共库。因此,我已将Commons.sln
的项目添加到Cars.sln
。但是我遇到了这个设置的问题,因为我的团队中从未构建Commons.sln
的人员没有将此解决方案中的NuGet包下载到他们的计算机上,并且尝试构建Cars.sln
时 - 他们面临错误说法找不到来自Commons.sln
的项目的dll。
长话短说 - 我想在构建之前执行nuget restore ../../Commons/Commons.sln
,但在Visual Studio中的每次构建/重建时都不知道如何在Cars.sln
解决方案级别上做得更好。
具体细节信息
我对此做了一些研究,并且有我的要点:
msbuild.exe
构建时才有效。特定项目绑定到CI服务器,所以这个结构也应该在那里工作(目前我已经解决了添加构建步骤,在其他所有内容之前构建Commons.sln
)
任何建议都表示赞赏。
答案 0 :(得分:0)
目前我已经通过向Commons.sln
中的项目添加msbuild目标来修复它,这是对包括特定项目在内的所有项目的依赖,例如Cars.sln
:
<Target Name="Test" BeforeTargets="BeforeBuild">
<Message Text="Restoring Common Nugets" Importance="high"></Message>
<Exec Command="nuget restore "$(ProjectDir)..\Avid.Common.sln"" />
</Target>
然而,如果有人有更好的解决方案,我会很高兴知道它。