2016-08-16 2 views
1

Я хочу, чтобы моя библиотека классов была условно скомпилирована так, что она находится в режиме отладки, когда мой проект, а не когда мой проект не является.Отладка с моими собственными библиотеками классов

К примеру, у меня есть этот модуль в моей библиотеке классов:

Module MyDebug 

    <Conditional("DEBUG")> 
    Sub print(ByVal msg As String) 
     Debug.Print(Now.ToString("yyyy-MM-dd HH:mm:ss.fff") & " " & msg) 
    End Sub 

    <Conditional("DEBUG")> 
    Sub debugEnd(Byval bool As Boolean) 

     Environment.Exit(0) 
    End Sub 
End Module 

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

Я пробовал поиск в Интернете, но я не нашел ничего, что помогло, поскольку я могу только найти, что делать с отладкой фактически библиотеки классов, в то время как я только хочу, чтобы он отправлял эти условно скомпилированные утверждения, пока я отлаживая мой проект.


Однако, экспериментируя вокруг немного, я обнаружил, что если в библиотеке классов я иду:

'My Project' -> the 'Compile' tab -> 'Advanced Compile Options'

, а затем отметьте «Определить DEBUG константа» (а затем построить библиотека), проект запускает отладочные операторы при вызове.

Однако я не совсем уверен в поведении «Определить константу DEBUG» в библиотеке классов. Определяет ли он DEBUG тогда и только тогда, когда мой проект находится в режиме отладки?

Если нет, то есть ли простой способ добиться того, что я намереваюсь сделать? (Я не хочу, чтобы пометить/убрать галочку флажка в библиотеке классов каждый раз, когда я переключаться между отладкой и выпуском в моем проекте, и моя библиотека классов ссылаются более одного проектом, так или иначе)


Обратите внимание, что в проекте я ссылаюсь на .dll в папке Bin -> Release моей библиотеки классов, которая, я надеюсь, является правильным способом ссылки на нее.


Кроме того, я хотел бы спросить о том, как VB acheives это с Debug класса, потому что он также импортируется со ссылкой, как и любой другой библиотеки классов, и работает так, как я хотел бы, выше - Конечно, я мог бы сделать то же самое?

ответ

2

Если вы сохраняете проект библиотеки классов в том же решении, что и ваш основной проект, он будет использовать ту же конфигурацию (Debug или Release), как и любой другой проект в этом решении. Это означает, что вам не нужно вручную проверять/снимать отметку Define DEBUG constant, поскольку она не будет определена в любом случае, если вы настроили конфигурацию на Release.

Даже если ваши проекты находятся не в одной папке, вы все равно можете добавить свой проект библиотеки классов к своему решению. Вот как это сделать:

  1. правой кнопкой мыши решение в Solution Explorer и Гото Add > Existing Project.

  2. В открывшемся диалоговом окне просмотра файлов найдите файл .vbproj вашей библиотеки классов и нажмите OK.

  3. Теперь, когда вы меняете конфигурацию компиляции, оно должно отражаться на всем решении, и ваша библиотека классов должна иметь только определенную константу DEBUG, если вы настроили конфигурацию на Debug.

Если вы не можете видеть ваше решение в Solution Explorer:

  1. В Visual Studio, Гото Tools > Options > Projects and Solutions > General.

  2. Проверьте Always show solution и нажмите OK.


Для выше работы необходимо также изменить способ ссылки на вашу библиотеку классов. То, как вы сейчас это делаете, является правильным, но в этом случае оно не будет работать, так как тогда вы будете ссылаться только на версию вашей DLL Release.

  1. Начните с удаления текущей ссылки на вашу библиотеку классов.

  2. Откройте диалоговое окно Add Reference и перейдите на вкладку Projects.

  3. Выберите проект своей библиотеки и нажмите OK.

Это должно теперь ссылаться на вывод библиотеки классов из текущей конфигурации компиляции решения.

+0

спасибо! Это идеальное решение для меня, так как я могу редактировать 2 вместе друг с другом, а также использовать точки останова. – Shuri2060

+0

@QuestionAsker: Рад слышать! Visual Studio очень оптимизирована и очень удобна для пользователя. Недавно я тоже начал использовать этот метод (даже если я знаю его уже много лет). –