Я знаю, что это действительно не умный вопрос, но у меня есть некоторые проблемы с пониманием того, как работает Visual Studio 2010.
При программировании формы Windows мне нужно было переместить класс (скажем, класс x) в исходный файл (скажем, x.cs), который был включен в основное пространство имен и сборку, в другой проект (и сборку) в другой пространство имен. Последняя представляет собой dll, предназначенную для сбора служебных классов. Наверное, я сделал это не так.
Симптомы: когда в основной форме (код, а не дизайн) нажатие F12 с помощью мыши над конструктором класса X приводит к отображению нового источника «из метаданных», включая объявление класса (но все же я могу открыть исходный код. код, щелкнув правой кнопкой мыши и выбрав «показать исходный код»). Кажется, что VS не может найти правильный исходный код в решении.
Мои вопросы:
- Как я могу оправиться от этого, имея F12 указывает на правильные методы?
- В целом, каков правильный метод перемещения кода в разных проектах и / или сборках?
1 ответ
Я только что попытался продублировать описанную проблему, но у меня все работает нормально. Позвольте мне описать шаги, которые я предпринял, и, возможно, вы заметите, где вы сделали что-то другое.
- Создать новое решение.
- Добавьте новое приложение Windows Forms под названием FormsApp. Это дает мне форму под названием Form1 с пространством имен по умолчанию FormsApp.
- Создал класс с именем Util в файле с именем util.cs в проекте FormsApp. Он получает то же пространство имен, что и FormsApp.
- Если я создаю экземпляр класса Util в конструкторе Form1, я могу нажать F12, чтобы привести к определению Util, как и ожидалось.
- В решении создана новая библиотека классов под названием Utility.
- Можно перемещать файлы несколькими способами, но я просто щелкнул файл util.cs в обозревателе решений и перетащил его в проект Utility. Это скопирует файл, но оставит оригинал на месте. Может, вы по-другому скопировали свои файлы?
- Когда оригинал удаляется, вы должны получить ошибку сборки, если попытаетесь скомпилировать. Этого следовало ожидать, поскольку проект FormsApp ничего не знает о классе Util в недавно добавленном проекте Utility.
- Добавьте ссылку на проект Utility в проект FormsApp в обозревателе решений.
- Если вы попытаетесь построить сейчас, то все должно получиться. Нажатие F12 в конструкторе Form1 приводит меня к определению класса Util, как и ожидалось, хотя я не менял пространство имен класса Util.
Если это поможет прояснить ситуацию, вот несколько изображений:
Обозреватель решений:
Конструктор Form1:
Утилита:
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.