jashimu Ответов: 2

сборка смешанного режима построена против версии '2.0.50727'


Всем привет,
У меня возникли некоторые проблемы. У меня есть приложение для windows, написанное в vs 2005, затем я преобразовал его в VS2010. Я не могу запустить приложение из-за проблемы сборки. когда я запускаю его, он говорит:"сборка смешанного режима построена против версии' v2.0.50727 ' среды выполнения hte и не может быть загружена в среду выполнения teh 4.0 без дополнительной информации о конфигурации."

Я погуглил его, нашел какую-то подсказку, но это не помогло. Я даже не знаю, что делать.
спасибо всем.

Nish Nishant

Обновил свой ответ.

2 Ответов

Рейтинг:
15

Nish Nishant

Похоже, что ваш проект C# ссылается на проект C++/CLI, который еще не был обновлен до .NET 4.0.

[Редактировать]
~~~~~~~

Откройте свой проект C++/CLI в VS 2010 и создайте его снова. А затем убедитесь, что ваш проект C# ссылается на новую библиотеку DLL, а не на старую.

[Править 2]
~~~~~~~~~

Это делается в ответ на комментарий SA:

Вы можете добавить ссылку только на ту же версию среды выполнения. .NET 2.0, 3.0 и 3.5 находятся в среде выполнения 2.0, поэтому их можно использовать друг с другом. .NET 4.0 использует совершенно новую среду выполнения 4.0, и поэтому вы не можете смешивать ссылки со старыми версиями.


Sandeep Mewara

Комментарий от ОП:
Нишант, спасибо за быстрый ответ. Вы правы. что же мне делать? Мое решение имеет два проекта: Один-на C#, другой-на C++/CLI.

спасибо снова.

Sergey Alexandrovich Kryukov

Нишант, это странно. Обычно вы можете ссылаться на сборку, скомпилированную для более низкой версии файла .NET. Может быть, это особенность только смешанного режима, как вы думаете?
--СА

Nish Nishant

Вы можете добавить ссылку только на ту же версию среды выполнения. .NET 2.0, 3.0 и 3.5 находятся в среде выполнения 2.0, поэтому их можно использовать друг с другом. .NET 4.0 использует совершенно новую среду выполнения 4.0, и поэтому вы не можете смешивать ссылки со старыми версиями.

jashimu

Нишант, у меня все еще есть проблема. Я не мог решить ее. Я не знаю, что еще я должен попробовать.

Nish Nishant

Если вы уверены, что перестроили библиотеку DLL C++/CLI как .NET 4.0, то, если вы все еще получаете ту же ошибку, вы можете быть достаточно уверены, что каким-то образом используете старую библиотеку DLL.

Попробуйте скопировать DLL C# и C++/CLI на новую машину, чтобы увидеть, если вы получите ошибку.

jashimu

Я использую sqlite в качестве базы данных. Как вы думаете, на SQLite DLL не работает на 4.0. Я не вижу ничего, что я делаю неправильно.

Nish Nishant

Я считаю, что sqllite является чисто местным, так что я не думаю, что это имеет значение.

Espen Harlinn

sqlite может быть скомпилирован как управляемая сборка :)

Я думаю, что ОП должен взглянуть на http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

для управляемой только версии : http://sqlite.phxsoftware.com/

Nish Nishant

Ах да, вполне возможно, что версия, которую он использует, скомпилирована для .NET 2.0.

Рейтинг:
1

Pawar.Nilesh

Исключение четко указывает на то, что какой-то компонент .NET 2.0.50727 был включен в .NET 4.0. в файле App.config используйте это:

<startup useLegacyV2RuntimeActivationPolicy="true" />