Czy można zaimportować bibliotekę Core do aplikacji w pełnym frameworku?

0

Czy można zaimportować bibliotekę Core do aplikacji w pełnym frameworku? Jak próbowałem debugować, to od razu wyskakiwał błąd, że nie można, bo ten kod nie jest natywny(tak przynajmniej zrozumiałem). Jednak może kwestia wersji żeby były zgodne. Nie jest pewien więc pytam tu.

0

Tak, bo masz coś takiego jak .NET Standard. Biblioteka implementuje pewną wersję Standard (np. 1.3) i wtedy działa na wszystkich platformach, które obsługują 1.3 (.NET Core 1.0, .NET Framework 4.6, UWP 10.0 i tak dalej).

Pokaż dokładny komunikat błędu.

0

Pojawia mnie się jakby nowa zakładka o nazwie "Break mode" i pisze "Your app has entered a break state, but no code is currently executing that is supported by the selected debug engine (e.g. only native runtime code is executing).".

Biblioteka jest w Core 2.0 a projekt w którym ją dodałem w Framework 4.6.2 Dodam, że w tej biblitece wywołuje klase statyczną z pustą metodą void. Tak dla testów.

W ogóle to czemu mogę utworzyć projekt w wersji Framework 4.6.2 maksymalnie, skoro mam na kompie (sprawdzałem przez MSBuild) wersje 4.7.2?

0

A z początku stworzyłem biblioteke w Standard 1.4 chyba i potem się okazało, że implementacja XDocument.Load w Framework 4.6 to XDocument.Parse lub na odwrót (nie pamiętam) xD Zamienione były metody. W wyższych Standatd już chyba było ok, alr wkurzyłem się i i przekopiowałem na Core licząc na lepszą kompatybliność.

0

Już rozwiązałem problem. Po prostu przeczytałem tabalke kompatybliności Net Standard i jakoś znalazłem kompris, chociaż jest jeden spory mankament...

Nie mogę u siebie odpalić w debugu projektu Net Core w wersji mniejszej niż 2.0(pewnie brak launchera), a chciałem stworzyć apke dla Windows 8.1(max Core 1.0 według tabeli) i Windows 10 ( Core 2.0 ) i nie martwić się, że może nie być na targecie launchera(tak roboczo nazwałem).
Mam kompilować osobno dla Core 2.0 i 1.0? Czy jest inne rozwiązanie?

Kolorowo te technologie to w artykułach tylko wychodzą : D

0

Biblioteka jest w Core 2.0 a projekt w którym ją dodałem w Framework 4.6.2 Dodam, że w tej biblitece wywołuje klase statyczną z pustą metodą void. Tak dla testów.

No więc i ja zrobiłem taki jest.

screenshot-20180105121241.png

namespace ClassLibrary1
{
    public class Class1
    {
        public void Hello()
        {
            Console.WriteLine("Hello, world");
        }
    }
}

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            var c = new ClassLibrary1.Class1();
            c.Hello();

            Console.ReadKey();
        }
    }
}

Działa zarówno gdy ClassLibrary1 jest dla .NET Standard 1.4, jak i 2.0. Nie mam "break state".

W ogóle to czemu mogę utworzyć projekt w wersji Framework 4.6.2 maksymalnie, skoro mam na kompie (sprawdzałem przez MSBuild) wersje 4.7.2?

AFAIK musisz mieć .NET 4.7 Targeting Pack doinstalowany.

Nie mogę u siebie odpalić w debugu projektu Net Core w wersji mniejszej niż 2.0(pewnie brak launchera), a chciałem stworzyć apke dla Windows 8.1(max Core 1.0 według tabeli) i Windows 10 ( Core 2.0 ) i nie martwić się, że może nie być na targecie launchera(tak roboczo nazwałem).

Niestety, nie rozumiem. Czym jest "launcher"?

Aplikacje Windows 8.1 (WinRT, bo to o tym mowa) wymagają co najwyżej .NET Standard 1.2 i musiałbyś się tego trzymać - ale kod z .NET Standard 1.2 bezproblemowo pasuje do aplikacji Windows 10 (UWP, bo o tym mowa). Z drugiej strony, jeżeli chcesz używać .NET Standard 2.0 w UWP, to musisz mieć Windows 10 w wersji 1709 (10.0.16299, czyli Fall Creators Update).

Jeżeli nie zajmujesz się aplikacjami WinRT ani UWP tylko "dużym" frameworkiem 4.6 (WinForms, WPF) to wersja Windows w ogóle nie ma znaczenia.

Mam kompilować osobno dla Core 2.0 i 1.0? Czy jest inne rozwiązanie?

Problemem by było to, że kod dla .NET Standard 2.0 jest bardziej podobny do "dużego" frameworka, a w niższych już niekoniecznie - więc sama rekompilacja mogła by być niemożliwa, wymagane by były dwie bazy kodu.

0

Dzięki.

Co do tego testu, ja stworzyłem taką klasę z metodą w swoim projekcie, bo nie wiedziałem co wywoływało to "break state", ale teraz sobie pomyślałem, że może ValueTuple albo Dynamicki mogły to powodować, bo jest teraz patrze, to ValueTuple są od Framework 4.7...

Już sam nie wiem co robić.
Chciałem napisać aplikacje na Windows(8do10) i Linux, która by wyglądała tak:

Model - Uniwersalny(Core/Standard)
WidokWindows(wf)
WidokLinux(core-konsola)
ControllerWindows
ControllerLinux
Launcher(jeden uniwersalny)

I już sam nie wiem czy to możliwe. Mógłbyś mi powiedzieć czy to możliwe? A może lepiej sworzyć oddzielnie na Windows i drugą całą w core na all platform?

0

Zatem:

Model - Uniwersalny(Core/Standard) -> biblioteka .NET Standard 2.0
WidokWindows(wf) -> aplikacja WinForms na .NET Framework 4.6
WidokLinux(core-konsola) -> aplikacja konsolowa .NET Core 2.0
ControllerWindows -> biblioteka? .NET Framework 4.6
ControllerLinux -> biblioteka? .NET Core 2.0
Launcher(jeden uniwersalny) - nie wiem co ma robić launcher - jeżeli to coś, co ma być "uruchamialne", to dla obydwu platform tylko aplikacja konsolowa .NET Core 2.0 wchodzi w grę

1 użytkowników online, w tym zalogowanych: 0, gości: 1