我们的项目使用了几个NuGet包,其中一些是引用LinqBridge,这是一个为C# 2.0重新实现LinqBridge的库。LinqBridge.dll文件位于/ .NET /PackageName/lib/20/LinqBridge.dll下,因此它显然只适用于.NET 2.0。
问题是,即使解决方案中的每个项目都被配置为构建为.NET 4.0,LinqBridge.dll二进制文件也会被复制到最终的/bin目录中,并在Razor视图中造成严重破坏。如果我在一个.Select()上执行IEnumerable,在内置的LINQ调用和LinqBridge提供的重新实现的调用之间有一个模糊的调用。
我显然不需要重新实现的版本;如果我只是从输出LinqBridge.dll目录中删除/bin,那么一切都很好。然而,这不是一个可以接受的永久解决办法。
我是否可以配置一些东西来停止将该文件复制到/bin输出中,这是一个旧的/bin版本的文件?
编辑:我将此添加到解决方案属性中的“构建后事件命令行:”命令中的"Build“命令中,从而将解决方案组合在一起:
del $(SolutionDir)\bin\LinqBridge.dll它还远不是理想的,但至少它让我的项目运行目前。
发布于 2011-09-11 11:15:18
NuGet有支持不同.NET版本的不同二进制文件,所以我建议您使用的包构建得很糟糕。
我将与包的作者联系,看看他们是否能够修复它们,以便只有net11或net20版本包括LinqBridge。
支持多个.NET框架版本和概要文件 许多库的目标是.NET框架的特定版本。例如,您可能有一个特定于Silverlight的库版本,以及另一个利用.NET Framework4特性的库版本。您不需要为每个版本创建单独的包。NuGet支持将同一个库的多个版本放在一个包中,将它们保存在包内的不同文件夹中。(更.)
发布于 2014-10-10 04:11:41
我们发现的一种有用的方法是使用LinqBridge.Embedded Nuget包而不是标准的LinqBridge包。这将Linqbridge作为C#文件嵌入到项目中,因此不会复制到bin文件夹并加载到Razor视图的上下文中。
这对我们很有用,因为我们引用的程序集仍然需要在.Net 2.0中构建,因为它也是由一个2.0应用程序引用的。因此,该程序集使用LinqBridge.Embedded,并且LinqBridge程序集不会在我们的4.0服务器的bin文件夹中结束。
https://stackoverflow.com/questions/7232681
复制相似问题