Почему для работы моего целевого приложения .NET 4 требуется 2.0? - PullRequest
2 голосов
/ 19 октября 2010

У меня довольно сложное приложение WPF и C ++ / CLI, созданное с использованием .NET 3.5.Мы перешли на 4.0, чтобы воспользоваться преимуществами WPF, поэтому все наши проекты в решении нацелены на 4.0.

При запуске нашего приложения на машинах с XP только 4.0 (и MSVC ++ 2010 [и 2008])появится диалоговое окно с сообщением об ошибке:

"Чтобы запустить это приложение, сначала необходимо установить одну из следующих версий .NET Framework: 2.0.50727"

Если яиди установи .NET 2.0 с .NET 4.0, мое приложение запустится.

Кто-нибудь знает, как отладить загрузку сборок, чтобы узнать, что происходит?

ОБНОВЛЕНИЕ

Я только что узнал об окне «Модули» в VS2010, а также наблюдал события загрузки модулей в окне вывода при работе в отладчике.Я ясно вижу, что с моим приложением работает один модуль .NET 2.0.

'Kudu.exe': Loaded 'C:\Windows\SysWOW64\WindowsCodecs.dll', Exports loaded.
'Kudu.exe': Loaded 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll', Exports loaded.
'Kudu.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5\msvcr80.dll', Exports loaded.

Есть ли способ узнать, что загрузило это?

Ответы [ 2 ]

4 голосов
/ 20 октября 2010

Хорошо, я сдался и шаг за шагом перебирал свой код, пока не попал в операторы загрузки модулей.Нет, благодаря ужасному стеку вызовов VS2010 и беспричинным точкам останова, это была моя ссылка на устаревшие функции StrongName.h, которые я использую для проверки наших сборок.

.NET 4 теперь использует функции MetaHost.h и ICLRStrongName.

ДЕЙСТВИТЕЛЬНО должно быть предупреждение об этом компилятора.

3 голосов
/ 19 октября 2010

Проверьте целевую структуру каждого проекта в вашем решении.
Кроме того, проверьте представление My Solution в обозревателе объектов и убедитесь, что вы не видите mscorlib [2.0.0.0].

Возможно также, что вы 'ссылка на отдельную DLL, скомпилированную для .Net 2.0.

...