MSBuild:我如何强制ProjectReference在其他位置搜索程序集?

4
我们有很多包含相同共享15个项目的Visual Studio解决方案,大多数解决方案仅有一个Web应用程序不同。我试图将所有内容合并到单个构建中,只构建共享项目一次,然后让Web应用程序项目引用输出的共享程序集。但是发现,由于Web项目通过元素指向共享项目,因此我无法告诉它在我的自定义构建项目中查找程序集的其他位置。 我想使用类似以下的东西:<MSBuild Projects="@(Solutions)" Targets="Rebuild" Properties="ReferencePath=$(MyReferencePathFolder)">但只有当Web项目通过元素引用共享程序集的dll时才有效。如果在中找不到指定的内容,则似乎不会尝试查找任何ReferencePath文件夹。 它就放弃了。

为什么不把所有的Web项目都放在同一个解决方案中呢? - yfeldblum
我尝试过那样做,但似乎会通过多次构建所有共享项目来减慢速度。 - Chad Gilbert
@ChadGilbert:你最终找到解决方案了吗? - Rob
@Rob - 这个问题是11年前的,当时NuGet还不存在。如果我今天面临这个问题,我会将这些共享项目发布为NuGet包到私有的NuGet仓库中,然后导入它们作为包就很简单了,编译时间也会更快。 - Chad Gilbert
1个回答

1

您可能想考虑从一个知名位置引用这15个共享程序集。

您可以创建一个包含这15个项目并将其输出复制到特定文件夹的解决方案。然后,您可以更改 Web 应用程序项目以引用这些程序集,而不是共享项目。

使用此方法你会失去自动从 Web 应用程序解决方案重新构建共享项目的能力。如果您想在处理 Web 应用程序解决方案之一时自动重新构建这15个程序集,则可以在 Web 应用程序解决方案中添加预构建步骤来构建新的共享项目解决方案。


这就是我希望避免的情况。我想让开发人员在开发过程中只需轻松地点击一次编译按钮,而不必先重新编译共享代码,然后再编译Web代码。 - Chad Gilbert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接