2017-06-14 12 views
7

Mam funkcję, którą chcę tylko wydarzyć podczas debugowania, ale nie chcę wysyłać bibliotek DLL, których ta funkcja wymaga. Czy to możliwe?C# za pomocą instrukcji wewnątrz #if DEBUG, ale nie wysyłam zespołu

mam:

#if DEBUG 
using MyAssembly; 
#endif 

Oczywiście MyAssembly jest określany przez projekt. Chciałbym, aby plik MyAssembly.dll nie był wysyłany w trybie zwolnienia. Czy można to osiągnąć? Czy użycie warunkowego ("DEBUG") pomoże w tym zakresie?

+2

W dyrektywach 'using' nie robi się niczego w kategoriach złożeń - dotyczą one tylko przestrzeni nazw. Możesz chcieć, aby odwołanie do zestawu było warunkowe w twoim pliku projektu ... chociaż jeśli żaden z kodów * nie odwołuje * do kodu w zespole w trybie zwolnienia, kompilator C# i tak nie użyje odwołania, tak długo jak ja '. m świadomy. (Powinieneś jednak sprawdzić - i mimo to warunkuję referencję, żeby to potwierdzić.) –

+0

Dziękuję! Doceń opinię Jon! – Bati

Odpowiedz

8

Referencje, które nie są wymagane, są zwykle usuwane automatycznie przez kompilator, jednak: możesz być bardziej bezpośredni, zmieniając csproj na Condition na PropertyGroup. Coś jak:

<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> 
    <Reference Include="YourReference" /> 
</PropertyGroup> 

(może to być również <PackageReference> etc)

+0

Marc, co masz na myśli mówiąc, że "referencje są zazwyczaj usuwane" - jeśli mój kod jest pod #if DEBUG, ten kod nie będzie działał w wersji Release. Ale montaż jest nadal wdrażany. Nadal próbuję twojej składni .. dostaję błędy .. – Bati

+0

@Bati musisz sprawdzić IL, ale faktyczne referencje powinny zostać usunięte; jednak należy również sprawdzić konfigurację wdrażania, ponieważ można wdrażać elementy, które nie są odniesieniami. Nie można powiedzieć więcej bez prawdziwych plików. –

+0

Dodanie warunku do węzła referencyjnego sprawiło, że trik wygląda następująco: Bati

5

To perfekcyjnie umieścić dyrektywę using w sekcji #if DEBUG i to będzie usunąć tę dyrektywę gdy kompilowany do debugowania.

Jednak to tylko część historii; nie osiągnie on samego celu. Eksplorator rozwiązań w Visual Studio ma także sekcję Referencje. Będziesz także musiał usunąć odwołanie do złożenia lub nadal będzie ono dołączane podczas kompilacji.

Nie pamiętam nic w interfejsie użytkownika Visual Studio, który pozwoli ci to zrobić, ale spodziewam się, że powinno być możliwe, jakoś ręcznie edytować plik projektu (to tylko plik MSBuild). Osobiście bardzo się staram, aby uniknąć robienia rzeczy wymagających ręcznego edytowania plików projektu. Visual Studio chce mieć możliwość posiadania tych plików, co może prowadzić do konfliktów, w których Ty i Visual Studio nadpisujesz nawzajem swoje zmiany.

+0

Dziękuję za twoje dane wejściowe – Bati

Powiązane problemy