Пространство имен не может быть найдено после изменения целевой структуры с v4.0 до v3.5 - PullRequest
6 голосов
/ 22 февраля 2011

У меня есть 2 проекта в решении, 1 dll, другой exe.Оба использовали .net версии 4.0, однако никаких специальных библиотек 4.0 не использовалось, поэтому я мог безопасно сменить их на 3.5

. Я сделал это в обоих свойствах проекта, я построил dll нормально.Теперь, когда я пытаюсь построить исполняемый файл, он не может найти пространство имен DLL.Я прочитал ссылку, но она все еще не видна.Когда я вернул версию .net, она сказала, что мне может потребоваться изменить файлы проекта перед сборкой.Я пытался найти решение через Google, но ключевые слова, которые я использую, слишком часто используются.Кто-нибудь может посоветовать?

Большое спасибо, Крис

Редактировать: уже пробовал следующее ..

  • Ссылка на DLL специально, при этом не копируя 4.0
  • Удалить папки bin и obj
  • Перезапустить VS

Ответы [ 5 ]

2 голосов
/ 22 февраля 2011

Вместо того, чтобы ссылаться на выходную DLL, вы попытались вместо этого установить ее в качестве ссылки на проект.

Кроме того, вы выполнили чистую сборку решения, если какие-либо файлы .Net 4.0 задерживались? Вы можете вручную очистить проект, удалив папки bin и obj.

Вы пытались удалить проекты из решения, создать новый проект .net 3.5 и скомпилировать его. Затем добавьте в проект ddl (Добавить -> существующий проект) и скомпилируйте, затем добавьте в exe проект без ссылки, скомпилируйте и добавьте ссылки.

Странный вопрос, но вы все еще проверяете пространства имен? Можете ли вы назвать в своем проекте namesapce, то есть using mydllproject.model.myengine

1 голос
/ 22 февраля 2011

Я бы открыл файлы вашего проекта в формате XML.Для этого закройте решение и снова откройте проекты, нажав стрелку вниз на кнопке Файл / Открыть и выбрав Открыть с помощью ... Редактор XML (текста).Убедитесь, что у каждого проекта есть ToolsVersion = "4.0" в заголовке.Проверьте элементы RootNamespace и TargetFrameworksVersion, чтобы увидеть, имеют ли они ожидаемые значения.В нижней части файла проверьте элемент ProjectReference в ItemGroup.Убедитесь, что GUID в ссылке на проект совпадает с GUID, определенным в файле вашего решения.

Наконец, убедитесь, что вы очистили свой проект, прежде чем перестраивать его.Если вы используете систему контроля версий, проверьте проект в новой пустой песочнице.

Удачи!

0 голосов
/ 09 июля 2013

У меня была очень похожая проблема с этим. В моем случае это было два проекта: «библиотека классов» и приложение Windows Form в одном решении.

После изменения целевой инфраструктуры обоих проектов на платформу .NET4.0 и добавления ссылки на библиотеку классов в моем приложении windows form, он не обнаружит пространство имен моей библиотеки классов.

Вот что я сделал, чтобы окончательно решить проблему:

  1. Создан новый проект с платформой .NET 4.0 в качестве целевой платформы. Я импортировал все свои формы и классы в этот проект из оригинального решения.

  2. Добавлена ​​существующая библиотека классов в качестве нового проекта.

  3. Добавлена ​​ссылка на проект библиотеки классов из моего проекта Windows Forms

  4. Для каждого из файлов классов в проекте библиотеки классов я установил для параметра «Действие сборки» значение «Компилировать»

  5. Щелкните правой кнопкой мыши проект библиотеки классов и выберите «Перестроить».

  6. Затем, когда я захожу в проекты Windows Forms, я вижу пространство имен, когда использую ' с использованием оператора namespace_name '.

Примечание: Возможно, вам не нужно создавать новый проект, как я делал в первые несколько шагов. Но изменение действия сборки определенно помогло.

Надеюсь, это поможет.

0 голосов
/ 22 февраля 2011

Проверьте библиотеки DLL, на которые вы ссылаетесь, какой тип целевой среды выполнения им требуется, особенно «Engine.dll».Вы можете сделать это с .NET Refractor, например.Если они скомпилированы для v4.0, вам нужно получить версии для более ранней версии среды выполнения .NET.

0 голосов
/ 22 февраля 2011

-Поставь dll и exe в 3.5
-Скомпилируйте только dll
-Удалите ссылку на dll и прочитайте ее
-Строить решение

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