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

MSBuild:如何强制ProjectReference在其他位置搜索程序集?,msbuild,build-automation,tfsbuild,Msbuild,Build Automation,Tfsbuild,我们有大量的VisualStudio解决方案包含相同的共享15个项目,大多数解决方案只因web应用程序而异 我试图将所有内容整合到一个构建中,该构建只构建一次共享项目,然后让web应用程序项目引用输出共享程序集 我发现,由于web项目通过元素指向共享项目,我无法告诉它在我的自定义构建项目中的其他地方寻找程序集。我想使用类似于: 但只有当web项目通过元素引用共享程序集的dll时,这才有效。似乎如果在中找不到指向的内容,它不会尝试在任何ReferencePath文件夹中查找。它只是放弃了。 您可

我们有大量的VisualStudio解决方案包含相同的共享15个项目,大多数解决方案只因web应用程序而异

我试图将所有内容整合到一个构建中,该构建只构建一次共享项目,然后让web应用程序项目引用输出共享程序集

我发现,由于web项目通过元素指向共享项目,我无法告诉它在我的自定义构建项目中的其他地方寻找程序集。我想使用类似于:


但只有当web项目通过元素引用共享程序集的dll时,这才有效。似乎如果在中找不到指向的内容,它不会尝试在任何ReferencePath文件夹中查找。它只是放弃了。

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

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


这种方法所失去的是从web应用程序解决方案自动重建共享项目的能力。如果要在使用某个web应用程序解决方案时自动重新生成15个程序集,您可以在web应用程序解决方案中添加预构建步骤,以构建新的共享项目解决方案。

为什么不将所有web项目转储到同一个解决方案中?我已经尝试过了,但尝试多次构建所有共享项目似乎会减慢速度times@ChadGilbert:你找到解决这个问题的办法了吗?@Rob-这个问题是11年前,在NuGet存在之前。如果我今天要面对这个问题,我会将这些共享项目作为NuGet包发布到一个私有的NuGet存储库中,然后将它们作为包导入会很简单,编译时间会快得多。我希望避免这种情况。我想让开发人员在开发过程中只需点击一次compile按钮,而不必先重新编译共享文件,然后再重新编译web。