MSBuild ExecuteDDL在.NET Framework 4.0中失败

问题描述:

我已将我的项目从.NET 3.5迁移到4.0,因此我使用的是C:\ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319而不是C:\ MSBuild.exe。 WINDOWS \ Microsoft.NET \框架\ v3.5版本。这是造成ExecuteDDL任务失败。请帮忙。 干杯, NabinMSBuild ExecuteDDL在.NET Framework 4.0中失败

+0

当然,这是足够的信息去。不。例外?内部例外?事件日志?建立日志? – Will 2010-11-09 13:11:18

+0

“ExecuteDDL”任务意外失败。 System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.SqlServer.ConnectionInfo,Version = 9.0.242.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91”或其某个依赖项。该系统找不到指定的文件。 文件名: 'Microsoft.SqlServer.ConnectionInfo,版本= 9.0.242.0,文化=中性公钥= 89845dcd8080cc91' 在System.Reflection.RuntimeAssembly._nLoad(的AssemblyName文件名,字符串的代码库,证据assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark & – Nabin 2010-11-09 13:24:04

“无法加载文件或程序集Microsoft.SqlServer.ConnectionInfo,版本= 9.0.242.0,”

看起来像它寻找SQL Server 2005客户端工具,你有这些安装?

MSBuild社区任务中的ExecuteDDL任务使用Microsoft.SqlServer.ConnectionInfo程序集。该组件是动态加载和它改掉加载以下组件按以下顺序:

  • Microsoft.SqlServer.ConnectionInfo,版本= 10.0.0.0,文化=中性公钥= 89845dcd8080cc91
  • Microsoft.SqlServer。 ConnectionInfo,版本= 9.0.242.0,文化=中性公钥= 89845dcd8080cc91

所以它会尝试加载10.0(SQL Server 2008中),然后9.0(SQL Server 2005中)。如果它找不到其中任何一个,则会失败,并收到异常。

默认情况下,Sql Server将这些设置放在GAC中,因此请先检查它们是否在您的机器上。如果这不能解决您的问题,请告诉我。我写了这个任务,我会从你那里得到更多的信息并让它工作。

更新

没有添加SQL Server 2008中支持,直到03/2009,不幸的是官方的版本是比旧的。从http://msbuildtasks.tigris.org/里面有很多bug修复抢每晚构建:

+0

GAC版本是10.0.0.0,但没有9.0.242.0,但是Framework 3.5的MSBuild工作正常,而Framework 4.0的MSBuild则抛出了异常 – Nabin 2010-11-11 11:23:15

+0

我确认这个任务在MSBuild 4.0中工作得很好。我更新了上面的答案 – Todd 2010-11-16 02:02:40

+0

我可以确认获得最新的每晚构建而不是修复问题。默认情况下自然会发布的最新版本严重老化! – 2011-01-07 14:06:53