DacFx:加载Microsoft.Data.Tools.Schema.Sql.resources时出错

时间:2016-11-01 15:07:25

标签: c# .net sql-server sql-server-data-tools dacpac

我正在尝试在我的应用程序中使用DacFx。我用nuget命令安装了DacFx包:

Install-Package Microsoft.SqlServer.DacFx.x64

之后,我正在遵循本指南:

http://blogs.msmvps.com/deborahk/deploying-a-dacpac-with-dacfx-api/

但是,就行了

dacServiceInstance.Deploy 

尝试加载“Microsoft.Data.Tools.Schema.Sql.resources,Version = 13.0.0.0,Culture = ru-RU,PublicKeyToken = b03f5f7f11d50a3a”

时出现System.IO.FileLoadException

图书馆就在这里,但是为了获得更多信息,我在FusionLog属性中有这个文本(由我未定位):

The located assembly's manifest definition does not match the assembly reference: CULTURE
Failed to complete setup of assembly (hr = 0x80131040)

正如我可以想象的那样,框架正在尝试加载这个程序集,但不知何故,明显的文化与实际文化不同。我该怎么办?

使用的Nuget包:Microsoft.SqlServer.DacFx.x64版本130.3485.1

应用程序是带有WPF的Windows桌面应用程序,没有MVC或其他Web内容。

我正在使用MSVS 2013,Windows 7俄语(我认为它可能是问题的一部分)

更新:通过将本地文化更改为“en-US”来解决此问题。似乎任何改变它的方法都有效,因为Fusion(.Net程序集加载器)然后不会尝试加载资源程序集。检查了其他文化,例如“pt-BR”,所有文化都被打破了与“ru-RU”相同的错误。我不知道,也许这是一个nuget包故障。 现在我已插入

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

在我的应用程序中,一切正常。请发表评论,如果有更方便的方法来解决这个问题而不改变应用程序的文化。

1 个答案:

答案 0 :(得分:0)

好的,我明白了。

MSVS 2013 - 最新更新,最新的SSDT - 不适用于“en-US”以外的文化。从问题中尝试了Nuget包,将DacFx.msi与MS分开 - 没有效果。

MSVS 2015 - 最新更新,最新的SSDT - 与任何文化完美契合。