2016-07-22 11 views
6

Stworzyłem wiele projektów współdzielonych i testuję, czy można je udostępniać między różnymi typami projektów, jak mam nadzieję i oczekuję. Do tej pory udało mi się je wszystkie (czasami z niewielkim obejściem), ale nie mogę jeszcze wymyślić, jak to zrobić z biblioteką .NET Core Class, która byłaby naprawdę przydatna.Jak odwołać się do projektu współdzielonego Visual Studio w bibliotece biblioteki rdzeniowej .NET

Ponieważ nie mogę tego zrobić przez Visual Studio 2015, czy ktoś wie jak to zrobić? Być może wpisując odniesienie bezpośrednio do pliku project.json dla Biblioteki klas?

EDYCJA: Od wersji Visual Studio 2017 RC, projekty współdzielone prawidłowo współpracują z projektami .NET Core.

Odpowiedz

5

Od wersji Visual Studio 2017 RC współdzielone projekty działają poprawnie również na platformie .NET Core.

+0

Myślę, że to zależy od definicji "prawidłowo". Mam wspólny projekt zawierający test jednostki i dwa projekty testowe, jeden .NETCoreApp1.0 i jeden .NET Framework 4.6.2, które odnoszą się do wspólnego projektu. Udostępniony test jest widoczny tylko w .NET Framework. To samo dotyczy programu .NETCoreApp1.1. –

+1

Zawsze pakuję Moje wspólne projekty w bibliotekę dll, na przykład bibliotekę klasy .NET Core 1.1 lub bibliotekę .NET Framework. Następnie odwołuję się do tej biblioteki DLL do mojego projektu testowego.Biorąc pod uwagę, jak same testy mają tendencję do polegania na konkretnych wersjach bibliotek, nie próbowałem faktycznie dzielić testu między dwiema bibliotekami. W każdym razie, mam nadzieję, że zgłosisz swoje ustalenia do firmy Microsoft za pomocą wbudowanego narzędzia do raportowania - właśnie naprawili problem w najnowszej wersji, którą zgłosiłem wcześniej, gdzie nie można usunąć odniesienia do projektu udostępnionego za pomocą programu Visual Studio (musiałem zrobić więc w pliku projektu zamiast) – Arwin

3

Wygląda na to, że nie jest to możliwe - starałem się dowiedzieć, jak to zrobić dzisiaj! Najlepszym że znalazłem pochodzi z tym SO pytanie:

How can I use xproj (asp.net/dotnet core project) with shproj (shared project)?

Co Biorę od niego jest to, że mogę tworzyć projekty wspólnego, że można odwoływać się bezpośrednio NET45/46 bibliotek klasy, lecz będą musiały być wciągnięta do projektów .NET podstawowych za pomocą obejścia project.json opartych dodając następujące „buildOptions” -

"buildOptions": { 
    "compile": { 
    "include": [ 
     "../../TesterShared/**/*.cs" 
    ] 
    } 
} 

W powyższym przykładzie, mój wspólny projekt o nazwie „TesterShared” i wizualny Studio stworzyło to w źródle rozwiązania - w przeciwieństwie do projektów .NET Core, które go dotyczą tworzy w folderze "src" (stąd podwójna nawigacja ścieżki rodzica "../").

+0

Jeśli to działa, jest to coś, z czym mogę żyć na razie! Miejmy nadzieję, że kolejna aktualizacja Visual Studio naprawi to. – Arwin

+1

Mam taką nadzieję! Ponieważ projekt.json najwyraźniej został zastąpiony innym rodzajem pliku .csproj, może zrobi to wtedy. Używałem tego podejścia, więc wiem, że działa dobrze, ale są pewne ograniczenia. Chciałem dołączyć plik bazy danych ".sqlite" do udostępnionego projektu i miałem z tym problemy (są opcje "copyToOutput", które mogą prawie osiągnąć to, czego chcę, ale nie całkiem). Ponadto, jeśli edytujesz pliki we wspólnym projekcie, musisz wymusić przebudowę swojego projektu .NET Core - nie zorientuje się, że zmiany w projekcie współdzielonym wymagają przebudowania. –

+0

Ah, to są naprawdę irytujące ograniczenia. Więc w zasadzie Visual Studio naprawdę nie wie, że wspólny projekt był połączony, ale przynajmniej go skompiluje. Co do sprawy SQLLite, uważam, że dotyczy to głównie klienta. Staram się mieć zerowe zależności w moich wspólnych projektach i powinienem zdefiniować interfejsy dla wszystkiego, co zewnętrzne może zostać wstrzyknięte w konstruktorze. Przyjmuję twoją odpowiedź, jeszcze raz dziękuję. – Arwin

Powiązane problemy