0

我有一个小型应用程序,它使用与 powerscript 示例相同的 API,用于从 dacpac(数据层应用程序)升级数据库。

为了让它在没有安装任何 SQL Server 工具的 Windows 2008 服务器上运行,我必须引用很多 dll 并在这些 dll 上选择“复制本地”以将它们放入我的编译文件夹中。这工作正常。

我现在想从 Azure 上的辅助角色调用相同的 API。但是当我运行它(使用相同的 dll)时,我得到了

“System.IO.FileLoadException:无法加载文件或程序集'Microsoft.SqlServer.BatchParser.dll'或其依赖项之一。应用程序无法启动,因为其并排配置不正确。请查看应用程序事件日志”

当我部署到本地模拟器时它工作正常。

我还不能从日志中得到任何有意义的东西(不确定我的诊断是否正确)。

提到的文件在已发布的包中。我找到了 2 个版本的 teh 文件,但另一个版本是 32 位的,如果我尝试它,我(可以理解)得到一个 BadFormat 异常。

这是我引用的dll:

ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Microsoft.Build.Utilities.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Microsoft.CSharp
Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Microsoft.ReportViewer.ProcessingObjectModel, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
Microsoft.SqlServer.BatchParser
Microsoft.SqlServer.BatchParserClient
Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Diagnostics.STrace, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Dmf, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.Dac, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.DacEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.DacSerialization, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.SmoMetadataProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Management.SqlParser, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.ServiceBrokerEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.SqlClrProvider, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.SqlServer.SqlEnum, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL
Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.WindowsAzure.ServiceRuntime
Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
System
System.Configuration
System.Core
System.Data
System.Data.DataSetExtensions
System.Data.Entity.Design
System.Deployment
System.Drawing
System.Windows.Forms
System.Xml
System.Xml.Linq
WindowsBase

有什么我想念的想法吗?

4

1 回答 1

0

我想我已经破解了这个。我启用了对 VM 的远程访问,这意味着我可以访问应用程序事件。运行我的辅助角色后,我在事件查看器中遇到错误,提示找不到 microsoft.vc80.crt。

我没有找到那个名字的 dll 但我找到了

microsoft.vc80.crt.manifest 

在这个文件夹中:

C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\Update Cache\KB2528583\ServicePack\x64

它指向我还包括的其他 3 个 dll:

msvcr80.dll
msvcp80.dll
msvcm80.dll

到目前为止,我只运行了一次升级,但希望现在可以完成。如果我发现/修复任何更多问题,我会在这里更新。

希望这可以帮助某人。

于 2011-10-20T21:10:15.667 回答