Не удается разрешить ссылку на проект из-за косвенной зависимости от текущей целевой структуры - PullRequest
5 голосов
/ 17 марта 2011

Может кто-нибудь перевести это на английский?

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.

Это проблема с целевой версией МОЕ ПРОЕКТА или проблема между .Net и библиотекой SQL Server, которую я пытаюсь использовать?

Мне нужно нацелиться на .Net 2.0, но мне все равно, какой подуровень (2.0.3600). Можно ли это изменить? Я посмотрел в свойствах проекта и никак не мог изменить подуровень (только между .Net 2, 3.5, 4 и т. Д.)

Что мне нужно сделать, чтобы обойти это?

Ответы [ 2 ]

5 голосов
/ 17 марта 2011

Я нашел эту проблему на другом форуме , и, по крайней мере, это объяснено.

Спасибо, что нашли время отправить нам этот вопрос.

Похоже, что ссылка на mscorlib 2.0.3600, который является бета-версией 2 .NET 2.0. Обычно это просто отработай сам, с версией номер перевозимого товара высота, но, в этом случае, бета-версия 2 число на самом деле выше. Ooopppss ...

Чтобы точно определить, где эта ссылка исходит от, мы действительно нужно начинать с подробного журнал. Вы можете получить это, выполнив вытекает из команды Visual Studio строка: msbuild {имя проекта} / v: d / t: перестроить / fl

Это создаст файл msbuild.log. Пожалуйста, прикрепите это к ошибке, чтобы мы можем взглянуть.

Как указано в теме, вы можете используйте app.config для перенаправления. Тем не менее, это будет работать только с исполняемый, и это только лейкопластырь реальная проблема, которая заключается в том, что вы используя нашу актуальную DLL.

Вы также можете использовать SpecificVersion = true для ссылки. Тем не менее, это побеждает многоцелевой, и является неподдерживаемым продвинутым сценарий. Это в основном потому, что как только вы это сделаете, вы можете получить другие ошибки, и вы действительно должны знать, что вы делаете, чтобы получить это работа.

Нам нужно определить фактическое сборка, которая ссылается на .NET v2.0 Бета 2, чтобы мы могли определить, как Вы можете получить последнюю версию сборка не Beta2.

Спасибо

Chuck England Visual Studio Платформа Менеджер программ - MSBuild

Есть также два возможных варианта исправления. Один из них - обновить версию Microsoft.SQLServer.msxml6_interop.dll в GAC, указав версию с правильным манифестом. Я не уверен, где вы получите 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> 
4 голосов
/ 17 марта 2011

Я решил проблему (для SQL Server 2005), построив свой проект на .Net версии 4 вместо 2.

...