Ponieważ rdzeń dotnet wrócił do tego .csproj
formatu, pojawiło się nowe automatyczne generowanie, MyProject.AssemblyInfo.cs
które zawiera między innymi.
[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Pamiętaj, że jest on automatycznie regenerowany przy każdej kompilacji. Wcześniej plik został znaleziony w katalogu / obj /, teraz wydaje się, że jest tylko w pamięci, ponieważ pliku nie można znaleźć na dysku, a kliknięcie komunikatu o błędzie nie powoduje otwarcia żadnego pliku.
Ponieważ są tam zdefiniowane, nie mogę ich zdefiniować w klasyce AssemblyInfo.cs
.
Gdzie / jak mogę zdefiniować firmę i wersję projektu?
Odpowiedzi:
Jak już zauważyłeś, możesz kontrolować większość tych ustawień w .csproj.
Jeśli wolisz zachować je w pliku AssemblyInfo.cs, możesz wyłączyć automatycznie generowane atrybuty złożenia.
Jeśli chcesz zobaczyć, co się dzieje pod maską, sprawdź Microsoft.NET.GenerateAssemblyInfo.targets wewnątrz Microsoft.NET.Sdk.
źródło
Te ustawienia zostały przeniesione do pliku .csproj.
Domyślnie nie są wyświetlane, ale możesz je odkryć w programie Visual Studio 2017 na
Package
karcie właściwości projektu .Po zapisaniu wartości te można znaleźć w
MyProject.csproj
Na karcie informacji o właściwościach eksploratora plików
FileVersion
jest wyświetlany jako „Wersja pliku” iVersion
„Wersja produktu”źródło
Class Library (.NET Standard)
. Czy masz pojęcie dlaczego? Używam wersji 15.1, wydanie 26403.7, wydanie społecznościowe.Robię następujące dla moich projektów .NET Standard 2.0.
Utwórz
Directory.Build.props
plik (np. W katalogu głównym repozytorium) i przenieś właściwości do udostępnienia z.csproj
pliku do tego pliku.MSBuild pobierze go automatycznie i zastosuje do automatycznie wygenerowanego
AssemblyInfo.cs
.Są one również stosowane do pakietu nuget podczas budowania go za
dotnet pack
pomocą interfejsu użytkownika lub za pośrednictwem interfejsu użytkownika w programie Visual Studio 2017.Zobacz https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build
źródło
Zawsze możesz dodać własny plik AssemblyInfo.cs , który jest przydatny
InternalsVisibleToAttribute
,CLSCompliantAttribute
i inne, które nie są generowane automatycznie.Dodawanie AssemblyInfo.cs do projektu
<project name> > Add > New Folder
.Add > New Item...
.Pomijanie automatycznie generowanych atrybutów
Jeśli chcesz przenieść atrybuty z powrotem do pliku AssemblyInfo.cs zamiast generować je automatycznie, możesz ukryć je w MSBuild, jak wskazał natemcmaster w swojej odpowiedzi .
źródło
Dodając do odpowiedzi NightOwl888, możesz pójść o krok dalej i dodać
AssemblyInfo
klasę, a nie zwykłą klasę:źródło
Chcę rozszerzyć ten temat / odpowiedzi na następujące. Jak ktoś wspomniał, to automatycznie wygenerowane AssemblyInfo może stanowić przeszkodę dla zewnętrznych narzędzi. W moim przypadku przy użyciu FinalBuilder miałem problem, że AssemblyInfo nie był aktualizowany przez akcję kompilacji. Najwyraźniej FinalBuilder polega na
~proj
pliku, aby znaleźć lokalizację AssemblyInfo . Myślałem, że szukał gdziekolwiek w folderze projektu. Nie. Więc to zmieniamwykonał tylko połowę pracy, pozwalał na niestandardowe informacje o montażu, jeśli został zbudowany przez VS IDE / MS Build. Ale potrzebowałem też FinalBuilder, aby to zrobić bez ręcznych manipulacji plikiem informacji o złożeniu. Musiałem zadowolić wszystkie programy, MSBuild / VS i FinalBuilder.
Rozwiązałem to, dodając wpis do istniejącego
ItemGroup
Teraz, mając ten element, FinalBuilder znajduje lokalizację AssemblyInfo i modyfikuje plik. Chociaż akcja
None
pozwala MSBuild / DevEnv zignorować ten wpis i nie będzie już zgłaszać błędu na podstawieCompile
akcji, która zwykle pochodzi z pozycji Informacje o złożeniu wproj
plikach.źródło