Dlaczego moge zpackować bibliotekę do wersji .net3.5, ale nie mogę jej skompilować?

0

Mam projekt, który chcę wrzucić na nugeta targetując net35 oraz netstandard1.0, mam takie coś w csproju:

<TargetFrameworks>net35;netstandard1.0</TargetFrameworks>

wywołuje

dotnet pack

The dotnet pack command builds the project and creates NuGet packages. The result of this command is a NuGet package (that is, a .nupkg file).

i generują mi się

screenshot-20210922222724.png

a w środku

dla standard 1.0:

screenshot-20210922222847.png

dla net35:

screenshot-20210922222901.png

ale gdy chce skompilować projekt, to dostaje:

screenshot-20210922222811.png

No i generalnie jak to testowałem, to wszystko działa OK, np. gdy później pobiorę tego nugeta na jakimś projekcie z .net framework 4.0, pytanie tylko:

Dlaczego?

1

Strzelam że dzieje się tak dla tego ponieważ pakujesz to jako self contained, natomiast VS polega dla SDK zainstalowanym w systemie tak jakbyś chciał to odpalić. Sprawdź czy będzie Ci się komplikowało po zainstalowaniu wymaganego SDK.

0

@Aventus

Właściwie to zapomniałem wspomnieć o najważniejszej rzeczy - ale ja chciałbym devolopować na np. netstandard1.0 - no bo po co mam doinstalowywać 3.5 jeżeli nie muszę?

Teraz robię tak że usuwam poniższą linijkę po wygenerowaniu pack

<TargetFrameworks>net35;netstandard1.0</TargetFrameworks>

i zastępuje ją

<TargetFramework>netstandard1.0</TargetFramework>

i mogę pracować dalej, aż do czasu gdy będę chciał wystawić na nugeta kolejną wersję, wtedy wracam do pierwszej linijki csproja i generuje packa.

Źle to wygląda i zastanawiam się czy da się lepiej

Strzelam że dzieje się tak dla tego ponieważ pakujesz to jako self contained,

Czy self contained nie miałby więcej plików niż jedna 25KB dll oraz pdb?

1

Czy self contained nie miałby więcej plików niż jedna 25KB dll oraz pdb?

Masz rację, źle spojrzałem. Zakladajac że nie masz tam żadnego innego projektu który wymagałby .Net 3.5 oraz innych ukrytych zależności, to jedyne co przychodzi mi na myśl to że VS wariuje co czasem sie zdarza.

Wyczyść solucje i skompiluj ją ponownie. Co jeśli próbujesz budować kod bezpośrednio przez MSBuild lub CLI (nie pamiętam czy CLI jest kompatybilny z standard 1.0).

0

z dotnet cli dotnet build działa, a nawet generuje dla obu :D

po usunięciu bin obj i zrobieniu dotnet clean VS nadal dalej nie puszcza i krzyczy że nie ma net35.

Chyba trzeba będzie jakieś issue otworzyć

0

"Have you tried turning it off and on again?" ;)

Mam tutaj na myśli spróbowanie z samym VS, a jeśli to nie zadziała to restart systemu.

Jeszcze jedna rzecz zapomniałem wspomnieć- batch clean i batch rebuild (w menu Build). Kiedyś gdzieś czytałem że podobno robi to jakieś dodatkowe rzeczy w tle. Mówiąc szczerze nie wiem co, ale kilka razy mi pomogło.

0

Masz napisane jak wół:

screenshot-20210923163106.png

0

@Azarien:

Nie załapałeś. (m.in) Czemu aby zbudować projekt przez VS muszę coś doinstalować, a z poziomu CLI działa? trochę niezbyt fajnie

edit.

Dowiedziałem się że warto to zgłosić, bo bug.

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