由于间接依赖于当前目标框架,无法解析项目引用

Pet*_*vin 5 .net c# ssis packages visual-studio-2010

有人可以把这个翻译成英文吗?

The primary reference
"Microsoft.SQLServer.ManagedDTS, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"
could not be resolved because it has an indirect dependency on the .NET Framework assembly
"mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
which has a higher version "2.0.3600.0"
than the version "2.0.0.0" in the current target framework.
Run Code Online (Sandbox Code Playgroud)

这是MY PROJECT的目标版本的问题,还是.Net和我试图使用的SQL Server库之间的问题?

我需要针对.Net 2.0,但我不关心什么是子级别(2.0.3600).这可以改变吗?我查看了项目属性,并没有看到任何改变子级别(仅在.Net 2,3.5,4等之间)

我需要做些什么来解决这个问题?

Dav*_*vid 5

我在另一个论坛上发现了这个问题,至少它得到了解释.

感谢您抽出宝贵时间向我们发送此问题.

看来引用的是mscorlib 2.0.3600,它是.NET 2.0的Beta 2.通常这只会自行解决,运输产品的版本号很高,但在这种情况下,Beta 2号码实际上更高.Ooopppss ...

为了确定此引用的确切位置,我们确实需要从详细日志开始.您可以通过从Visual Studio命令行执行以下命令来获取此信息:msbuild {projectname}/v:d/t:rebuild/fl

这将创建一个msbuild.log文件.请将此附加到错误,以便我们可以看看.

如线程中所示,您可以使用app.config重定向.但是,这只适用于和可执行,并且它只是创可贴的真正问题,即你使用的是我们的日期DLL.

您还可以在引用上使用SpecificVersion = true.但是,这会使多目标失败,并且是不受支持的高级方案.这基本上是因为一旦你这样做,你可能会得到其他错误,你真的必须知道你正在做什么才能让它工作.

我们需要确定引用.NET v2.0 Beta 2的实际程序集,以便我们确定如何获取最新版本的非Beta2程序集.

谢谢,

Chuck England Visual Studio平台项目经理 - MSBuild

修复发布的方法还有两种可能.一种是使用具有正确清单的版本更新GAC中的Microsoft.SQLServer.msxml6_interop.dll的版本.我不确定你在哪里获得dll但是值得通过其他网站上的帖子阅读.

另一个选项是.config文件修改.

这是他们为.config更改所做的,但是海报说它在可执行文件中工作,但不在类库中.我希望它有所帮助.

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v1.0.3705">
     <dependentAssembly>
        <assemblyIdentity name="mscorlib" publicKeyToken="b77a5c561934e089" culture="neutral"/>
        <bindingRedirect oldVersion="2.0.3600.0" newVersion="2.0.0.0"/>
     </dependentAssembly>
    </assemblyBinding>
</runtime> 
Run Code Online (Sandbox Code Playgroud)


Pet*_*vin 4

我通过针对 .Net 版本 4 而不是 2 构建项目解决了这个问题(对于 SQL Server 2005)。

  • 你应该接受你自己的答案,而不是我的答案,因为它肯定比我的答案更容易、更可靠。:-) 我喜欢这些观点,但我认为对于下一个人遇到同样问题的人来说,能够看到实际有效的答案更重要。 (2认同)