我们的项目使用了几个 NuGet 包,其中一些包引用了 LinqBridge,这是一个为 C# 2.0 重新实现 LINQ to Objects 的库。LinqBridge.dll 文件位于 /packages/PackageName/lib/20/LinqBridge.dll 下,因此它显然应该只适用于 .NET 2.0。
问题在于,即使解决方案中的每个项目都配置为构建为 .NET 4.0,LinqBridge.dll 二进制文件也会被复制到最终的 /bin 目录中,并在 Razor 视图中造成严重破坏。如果我在 IEnumerable 上执行 .Select(),则内置 LINQ 调用和 LinqBridge 提供的重新实现的调用之间存在不明确的调用。
我显然不需要重新实现的版本;如果我只是从输出 /bin 目录中删除 LinqBridge.dll,一切正常。然而,这不是一个可以接受的永久解决方案。
有什么办法可以配置一些东西来退出将该文件(用于旧的 .NET 版本)复制到 /bin 输出中?
编辑:我通过将其添加到我的解决方案属性中“构建事件”下的“构建后事件命令行:”命令中,将解决方案粘合在一起:
del $(SolutionDir)\bin\LinqBridge.dll
它仍然远非理想,但至少它让我的项目现在可以运行。