Visual studio LinqBridge打破了Razor视图:。基于网络版本的文件输出限制

Visual studio LinqBridge打破了Razor视图:。基于网络版本的文件输出限制,visual-studio,visual-studio-2010,nuget,nuget-package,Visual Studio,Visual Studio 2010,Nuget,Nuget Package,我们的项目使用了几个NuGet包,其中一些引用了LinqBridge,这是一个为C2.0重新实现LinqTo对象的库。LinqBridge.dll文件位于/packages/PackageName/lib/20/LinqBridge.dll下,因此它显然只适用于.NET 2.0 问题是,即使解决方案中的每个项目都配置为生成.NET 4.0,LinqBridge.dll二进制文件也会被复制到final/bin目录,并在Razor视图中造成严重破坏。如果我对IEnumerable执行.Select,

我们的项目使用了几个NuGet包,其中一些引用了LinqBridge,这是一个为C2.0重新实现LinqTo对象的库。LinqBridge.dll文件位于/packages/PackageName/lib/20/LinqBridge.dll下,因此它显然只适用于.NET 2.0

问题是,即使解决方案中的每个项目都配置为生成.NET 4.0,LinqBridge.dll二进制文件也会被复制到final/bin目录,并在Razor视图中造成严重破坏。如果我对IEnumerable执行.Select,则在内置LINQ调用和LinqBridge提供的重新实现的调用之间存在不明确的调用

我显然不需要重新实施的版本;如果我只是从output/bin目录中删除LinqBridge.dll,那么一切都正常。然而,这不是一个可接受的永久解决办法

是否有任何方法可以配置某些内容以停止将旧.NET版本的文件复制到/bin输出中

编辑:我通过将其添加到“生成后事件”命令行将解决方案粘在一起:我的解决方案属性中“生成事件”下的命令:

del $(SolutionDir)\bin\LinqBridge.dll
它仍然很不理想,但至少现在它让我的项目运行起来了。

NuGet有,所以我建议您使用的包构建得很糟糕

我会联系这些软件包的作者,看看他们是否能够修复它们,以便只有net11或net20版本包含LinqBridge

支持多个.NET Framework版本和配置文件 许多库针对.NET Framework的特定版本。例如,您可能有一个特定于Silverlight的库版本,还有另一个利用.NET Framework 4功能的库版本。您不需要为每个版本创建单独的包。NuGet支持将同一库的多个版本放在一个包中,并将它们保存在包中的不同文件夹中。

NuGet有,所以我建议您使用的包构建得很糟糕

我会联系这些软件包的作者,看看他们是否能够修复它们,以便只有net11或net20版本包含LinqBridge

支持多个.NET Framework版本和配置文件 许多库针对.NET Framework的特定版本。例如,您可能有一个特定于Silverlight的库版本,还有另一个利用.NET Framework 4功能的库版本。您不需要为每个版本创建单独的包。NuGet支持将同一库的多个版本放在一个包中,并将它们保存在包中的不同文件夹中。


我们发现一种有用的方法是使用Nuget包而不是标准的LinqBridge包。这将Linqbridge作为C文件嵌入到项目中,因此不会复制到bin文件夹并加载到Razor视图的上下文中


这对我们很有用,因为我们引用的程序集仍然需要在.NET2.0中构建,因为它也被2.0应用程序引用。因此,该程序集使用LinqBridge.Embedded,并且LinqBridge程序集最终不会出现在我们4.0服务器的bin文件夹中。

我们发现的一个有用的方法是使用Nuget包而不是标准的LinqBridge包。这将Linqbridge作为C文件嵌入到项目中,因此不会复制到bin文件夹并加载到Razor视图的上下文中

这对我们很有用,因为我们引用的程序集仍然需要在.NET2.0中构建,因为它也被2.0应用程序引用。因此,该程序集使用LinqBridge.Embedded,并且LinqBridge程序集最终不会出现在4.0服务器的bin文件夹中