.Net Framework 4.0中的SMO程序集
问题描述:
我正在使用.net framework 4.0和Web部署安装程序,我已经引用了sql server 2008的SMO程序集,当我在使用Smo Assemblies的设置中调用ExecuteNonQuery函数时,此错误“混合模式程序集是针对运行时版本”v2.0.50727“构建的,无法在4.0运行时加载,而无需其他配置信息。”但有时它在我的代码正常工作,但有一段时间它会给出这个错误,我有完全褪色与这个错误,我已经使用相同的类,相同的方法有时它运行正确,我找不到任何理由,我也想知道SMO程序集是否可用.Net framework v4.0?.Net Framework 4.0中的SMO程序集
答
这是一个已知的问题。 SMO对.Net 4.0的使用尚未被微软签署或公布。
存在不支持选项来得到这个工作(添加到您的app.config):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
答
对于目前已经在.NET V4使用SMO真正的答案似乎是这里的解决方法:
http://connect.microsoft.com/SQLServer/feedback/details/643811/net-4-0-compatible-smo
答
我自己也遇到了这个问题,并在添加上述标签(见@jimasp评论)似乎没有工作,但是,我已经把它添加到的app.config该项目的代码是位于,但是,它被用作p控制台应用程序的艺术。当我将它添加到控制台的app.config时,它运行时没有任何问题。我一直把它添加到错误的app.config。
这可能与此特定OP无关,但当您要调用[ServerConnection.ExecuteNonQuery()]时需要SMO库(http://msdn.microsoft.com/query/dev11.query?appId= Dev11IDEF1&升= EN-US&K = K(Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery); K(SolutionItemsProject); K(TargetFrameworkMoniker-.NETFramework,版本%3Dv4.0); K(DevLang-CSHARP)RD =真)这使您能够运行带有* GO *关键字的sql脚本。 – slugster 2012-12-17 10:26:41
我尝试过ADO(以及下面的答案中使用的方法)并使其工作。我可能会坚持使用它,因为我担心useLegacyV2RuntimeActivationPolicy =“true”的副作用。 – MikeMalter 2013-08-09 21:45:31