Программа написана с использованием .net 4.0, но мне нужно, чтобы это приложение работало на компьютерах с .net 2.0 - PullRequest
3 голосов
/ 14 сентября 2011

Этот вопрос должен быть понятен только из его названия, но позвольте мне объяснить более подробно. Я только что закончил писать свое приложение в том, что, как я считаю, .Net 4.0 Framework (см. Рисунок ниже). Поняв, что мне нужно, чтобы мое приложение было совместимо даже с самыми ранними версиями .Net Framework, я вернулся и изменил Target Framework в окне свойств Visual Studio. Это, к сожалению, оставило мне мучительно длинный список предупреждений и одну критическую ошибку. Мне было любопытно, если бы у кого-нибудь было какое-то решение о том, как заставить мое приложение (написанное с использованием инфраструктуры .Net 4.0) работать в среде, в которой работает.

Оригинальная подборка

Proof of being compiled in .Net 4.0 Framework

Список ошибок:

.Net 2.0 errors Спасибо, Evan

EDIT:

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

Warning 9   The referenced component 'System.Xml.Linq' could not be found.  
Warning 10  The referenced component 'System.Data.DataSetExtensions' could not be found.    
Warning 8   The referenced component 'System.Core' could not be found.  
Warning 11  The referenced component 'Microsoft.CSharp' could not be found.     
Warning 4   The primary reference "System.Xml.Linq", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "System.Xml.Linq" or retarget your application to a framework version which contains "System.Xml.Linq".   Protection
Warning 2   The primary reference "System.Xml.Linq" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "System.Xml.Linq" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".   Protection
Warning 5   The primary reference "System.Data.DataSetExtensions", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "System.Data.DataSetExtensions" or retarget your application to a framework version which contains "System.Data.DataSetExtensions". Protection
Warning 3   The primary reference "System.Data.DataSetExtensions" could not be resolved because it has an indirect dependency on the framework assembly "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "System.Data.DataSetExtensions" or retarget your application to a framework version which contains "System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".   Protection
Warning 1   The primary reference "System.Core", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "System.Core" or retarget your application to a framework version which contains "System.Core".   Protection
Warning 6   The primary reference "Microsoft.CSharp", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v2.0". To resolve this problem, either remove the reference "Microsoft.CSharp" or retarget your application to a framework version which contains "Microsoft.CSharp".    Protection
Error   7   Could not load file or assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Line 123, position 5.    C:\Users\FARINA_EVAN\Documents\Programming\C#\Run Time Crypter\Run Time Crypter\Properties\Resources.resx   123 5   Protection

Ответы [ 4 ]

3 голосов
/ 14 сентября 2011

Когда вы создаете новый проект, ориентированный на .NET 4.0, Visual Studio автоматически добавляет ссылки на некоторые часто используемые сборки: NET 4.0. Однако при изменении целевой платформы эти ссылки не удаляются, и, следовательно, их необходимо удалить вручную, поскольку вы не можете ссылаться на сборку .NET 4.0 из приложения .NET 2.0.

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

Любые ошибки компилятора, скорее всего, укажут вам правильное направление.

2 голосов
/ 14 сентября 2011

Сообщения об ошибках сообщают вам, что не так, в этом случае, что у вас есть ссылки в вашем проекте, которые не могут быть решены.Разверните узел ссылок в дереве проекта и удалите ссылки с предупреждающими значками на них.

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

2 голосов
/ 14 сентября 2011

Да, но вам нужно будет удалить любой код, ссылающийся на версию .net больше 2. Чтобы очистить эти ошибки выше, вам нужно удалить ссылки на все элементы, в которых указано «Ссылочный компонент xx может не найти ". Кроме того, вам необходимо выполнить поиск в файлах ресурсов, конфигурации и т. Д., Чтобы заменить любую ссылку .net 4 на .net 2 -> с 4.0.0.0 на 2.0.0.0, или полностью удалить ссылки, если они отсутствуют в. нетто 2.

0 голосов
/ 14 сентября 2011

Поскольку Linq недоступен в .NET 2.0, вы можете попробовать LinqBridge в качестве замены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...