codeprojectddx Ответов: 2

Как я могу указать версию сборки, загруженную при запуске


Я создал приложение, с помощью CSharp и противПроект нацелен на 4.5.1 и относится к mscorlib.dll сборка, но когда я запускаю приложение ,загружается mscorlib.dll версия-4.7.2 . Я не знаю, почему и как я могу отделить правильную версию сборки.
В face Я просто хочу, чтобы приложение загрузило сборку версии 4.5.2, например mscorlib.dll или другие сильные именованные ассамблеи.
Огромное спасибо.

Что я уже пробовал:

Я просмотрел сборки в VS при отладке.

2 Ответов

Рейтинг:
1

Kornfeld Eliyahu Peter

Вы можете использовать 'Specific Version' и 'Copy Local' на вашем ссылочном узле в вашем проекте, чтобы принудительно использовать определенную версию сборки, однако в этом случае вам придется развернуть эту сборку вместе с вашим приложением (возможно, она не находится на целевой машине)...

И кстати: почему?


codeprojectddx

Спасибо. Я хотел, чтобы отладить .чистая 4.5.1 В и Чтобы исходный код и загруженная dll соответствовали друг другу , Я думаю, что загрузка указанной версии dll-это хорошая идея.
Теперь у меня есть указанная версия dll ,версия о версии файла . Но я понятия не имею, как загрузить его, кроме библиотеки dll gac.

Рейтинг:
1

Richard Deeming

Начиная с версии v4.0, каждая новая версия .NET Framework была выпущена как "обновление на месте", заменяющее любую предыдущую установку v4.x.

Поэтому, если вы скомпилируете приложение с v4.5 и запустите его на компьютере с установленным v4.7, ваше приложение будет работать под управлением v4.7, и оно загрузит версии системных сборок v4.7.

Вы ничего не можете сделать, чтобы изменить это, и у вас не должно быть никаких причин для этого. Корпорация Майкрософт прилагает все усилия для обеспечения обратной совместимости каждой новой версии с предыдущими версиями. В тех случаях, когда поведение изменяется между версиями, приложения, скомпилированные против более старых версий, обычно получают более старое поведение.

Если вы считаете, что нашли подлинный случай, когда ваше приложение v4.5 сломано при работе под управлением v4.7, то вам нужно будет сообщить об этом в корпорацию Майкрософт.


codeprojectddx

Большое спасибо.Я сомневаюсь , что я никогда не устанавливал .net framework 4.7.2, но при запуске exe-файла он загрузит dll версии 4.7.2 .почему?
PS:Я действительно надеюсь, что мое приложение будет работать под управлением v4.6 или ниже.

Richard Deeming

Если он загружает системные сборки v4.7.2, то на вашем компьютере установлен v4.7.2. Если вы его не устанавливали, то он, вероятно, проник через обновления Windows.

codeprojectddx

теперь я ищу способ удалить версию 4.7.2

Richard Deeming

Почему? Если он что-то сломал, то вы должны сообщить об ошибке в Microsoft. Если это не имеет сломал что-нибудь, тогда зачем его удалять?

codeprojectddx

теперь у меня есть исходный код 4.7.1,я хочу, чтобы мое приложение, предназначенное для .net 4.7.1, запускалось и загружало ту же сборку версии 4.7.1, а не 4.7.2

Richard Deeming

Как мы все время говорим вам, вы не можете этого сделать!

Если вы обнаружили критическое изменение, которое не обрабатывается автоматически оболочками совместимости, сообщите об ошибке в корпорацию Майкрософт.

Если нет, то не беспокойтесь об этом. Просто позвольте фреймворку справиться с совместимостью за вас.

codeprojectddx

мой Бог . Сейчас я просто хочу удалить .чистая 4.7.2 ,и у меня не установлена эта версия .чистые рамки. Но она есть ,ОС-win10.Почему я не могу остановиться?

Richard Deeming

Потому что это часть Windows. Если вам нужна более ранняя версия, вам нужно будет выполнить откат к более ранней версии Windows.

Но еще раз, ПОЧЕМУ????

Если вы не определили конкретную проблему с 4.7.2, то какая разница, как вы думаете, это будет иметь значение?

codeprojectddx

я собираюсь отлаживать исходный код net framework в vs ,поэтому мне нужно ,чтобы версия исходного кода была такой же, как и dll.теперь исходный код 4.6.1, мне нужна dll 4.6.1, например mscorlib.dll быть загруженным не 4.7.2.
прошу прощения за мой плохой английский