dotnet core 5, selfcontained - Nie działa.

0

Hej,

Napisałem bardzo prostę aplikację konsolową w dotnet core 5. Przyjmuje dwa argumenty, nazwę pliku log oraz lokalizację plików na których wykona operację.
Jeśli plik logu nie istnieje to sprawdza gdzie jest exe, towarzy w tej lokalizacji plik logu i sobie do niego coś wpisuje.
Mój logger jest dodany jako referencje (project w .net 4.0 - choć nie wydaje mi się, żeby to miało znaczenie).

Projekt główny (dotnet core) zawiera w csproj coś takiego:

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <PublishSingleFile>true</PublishSingleFile>
    <PublishTrimmed>true</PublishTrimmed>
    <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
  </PropertyGroup>

Publikuję projekt z konsoli za pomcą
dotnet publish -c Release
Z tego co rozumiem to jeśli mam swoje argumenty w pliku csproj to w komendzie nie muszę ich uwzględniać.

komenda tworzy mi katalog:
bin\Release\net5.0\win-x64
W grupie ponad 200+ plików znajduje się mój exe, dll loggera. I z tego exe'ca wszystko mi działa. Plik logu jest tworzony i wpisywane sa informacje. Generalnie cacy.

W tym też katalogu jest folder publish w którym znajduje się ten mój docelowy exe'c, waży dobre 20 mb ale to jest dla mnie w mierę zrozumiałe.
Niestety za żadej kij nie chce działać. To co ma się wypisywać na konsoli pokazuje się tam bez problemu ale plik logu nie jest tworzony. Próbowałem łapać jakiś wyjątek ale nic takiego mi nie łapie.

I już nie wiem o co chodzi. Pewnie jakaś pierdoła, więc jak ktoś majakąś radę to będę wdzięczny.

0

Może przy dotnet publish dodaj przełącznik --self-contained true.
https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish

1

@HieronimBerbelek: ej ale selfcontained ci działa masz przecież jeden plik exe prawda? To, że appka nie działa poprawnie to nie wina selfconteina tylko twojego kodu, gdzieś musisz mieć buga. Pokaż kod odpowiedzialny za utworzenie tego pliku co logujesz a najlepiej to podepnij sie debugerem (https://docs.microsoft.com/pl-pl/visualstudio/debugger/attach-to-running-processes-with-the-visual-studio-debugger?view=vs-2019) do exe i zobacz co sie tam dzieje :)

0

Musi działać. Niech zrobi nową konsolową apkę i wypróbuje po kolei komendę dotnet publish z określony przełącznikami, a później z tym samym w csproj.

0

@Akihito: Sorki, chyba nie wyraziłem się wystarczająco jasno.
Komenda dotnet publish -c Release tworzy mi dwa katalogi, jeden z exe'c, moją dll-ką oraz 200+ innych dll-ek. I jak odpalam program za pomocą exe'ca zanjdującego się w tej lokalizacji to wszystko mi działa. Plik logu się tworzy i zarówno na konsoli jak i w pliku pokazuje się to co powinno.
Niestety w tym samym katalogu jest gatalog publish w nim znajduje się jeden duży exe'c ~20 mb. I niestety ten nie działa poprawnie, konsola wyświetla poprawnie to co powinno być, ale plik logu się nie tworzy.

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