Dokumentacja programu MSBuild dla projektów zestawu .NET SDK
Artykuł
Ta strona jest odwołaniem do właściwości i elementów programu MSBuild, których można użyć do konfigurowania projektów platformy .NET.
Uwaga
Ta strona jest w toku i nie wyświetla wszystkich przydatnych właściwości programu MSBuild dla zestawu .NET SDK. Aby uzyskać listę typowych właściwości programu MSBuild, zobacz Typowe właściwości programu MSBuild.
Właściwości walidacji zestawu
Te właściwości i elementy są przekazywane do ValidateAssemblies zadania. Aby uzyskać więcej informacji na temat walidacji zestawu, zobacz Walidacja zestawu.
Następujące właściwości programu MSBuild są udokumentowane w tej sekcji:
Te właściwości nie są jeszcze częścią zestawu .NET SDK. Aby ich używać, należy również dodać element PackageReference do pliku Microsoft.DotNet.ApiCompat.Task.
Ponadto następujące właściwości udokumentowane we właściwościach weryfikacji pakietu mają również zastosowanie do walidacji zestawu:
Właściwość GenerateAssemblyInfo steruje AssemblyInfo generowaniem atrybutów dla projektu. Domyślna wartość to true. Użyj false polecenia , aby wyłączyć generowanie pliku:
Gdy GenerateAssemblyInfo wartość to true, właściwości projektu związane z pakietem są przekształcane w atrybuty zestawu.
Aby uzyskać więcej informacji na temat generowania atrybutów zestawu przy użyciu pliku projektu, zobacz Ustawianie atrybutów zestawu w pliku projektu.
GeneratedAssemblyInfoFile
Właściwość GeneratedAssemblyInfoFile definiuje względną lub bezwzględną ścieżkę wygenerowanego pliku informacji o zestawie. Domyślnie jest to plik o nazwie [nazwa projektu]. AssemblyInfo. [cs|vb]$(IntermediateOutputPath) w katalogu (zwykle obj).
Ta właściwość dotyczy tylko projektów przy użyciu polecenia netstandard1.x. Nie dotyczy projektów korzystających z programu netstandard2.x.
NetStandardImplicitPackageVersion Użyj właściwości , jeśli chcesz określić wersję platformy niższą niż wersja metapakietowa. Plik projektu w poniższych przykładowych miejscach docelowych netstandard1.3 , ale używa wersji 1.6.0 programu NETStandard.Library.
Możesz określić właściwości, takie jak PackageId, , PackageVersionPackageIcon, TitleiDescription, aby opisać pakiet, który zostanie utworzony na podstawie projektu. Aby uzyskać informacje o tych i innych właściwościach, zobacz pack target (Element docelowy pakietu).
Właściwość jest podobna PackRelease do właściwości PublishRelease , z tą różnicą, że zmienia domyślne zachowanie elementu dotnet pack. Ta właściwość została wprowadzona na platformie .NET 7.
Począwszy od zestawu .NET 8 SDK, PackRelease wartość domyślna to true. Aby uzyskać więcej informacji, zobacz "dotnet pack" używa konfiguracji wydania.
Tylko zestaw .NET 7 SDK: aby użyć PackRelease w projekcie, który jest częścią rozwiązania programu Visual Studio, należy ustawić zmienną środowiskową DOTNET_CLI_ENABLE_PACK_RELEASE_FOR_SOLUTIONS na true (lub dowolną inną wartość). W przypadku rozwiązań, które mają wiele projektów, ustawienie tej zmiennej zwiększa czas wymagany do spakowania.
Właściwości weryfikacji pakietu
Te właściwości i elementy są przekazywane do ValidatePackage zadania. Aby uzyskać więcej informacji na temat weryfikacji pakietu, zobacz Omówienie weryfikacji pakietów.
Aby uzyskać informacje o właściwościach ValidateAssemblies zadania, zobacz Właściwości walidacji zestawu.
Następujące właściwości i elementy programu MSBuild zostały udokumentowane w tej sekcji:
Po ustawieniu trueApiCompatEnableRuleAttributesMustMatch wartości właściwość włącza regułę sprawdzania poprawności, która sprawdza, czy atrybuty są zgodne. Wartość domyślna to false.
Po ustawieniu trueApiCompatEnableRuleCannotChangeParameterName wartości właściwość włącza regułę walidacji, która sprawdza, czy nazwy parametrów zostały zmienione w metodach publicznych. Wartość domyślna to false.
Właściwość ApiCompatPreserveUnnecessarySuppressions określa, czy zachować niepotrzebne pomijania podczas ponownego generowania pliku pomijania. Gdy istniejący plik pomijania jest ponownie wygenerowany, jego zawartość jest odczytywana, deserializowana w zestawie pomijań, a następnie przechowywana na liście. Niektóre pomijania mogą już nie być konieczne, jeśli niezgodność została naprawiona. Gdy pomijania są serializowane z powrotem na dysk, można zachować wszystkie istniejące (deserializowane) wyrażenia, ustawiając tę właściwość na truewartość .
Element ApiCompatSuppressionFile określa ścieżkę do co najmniej jednego pliku pomijania do odczytu. Jeśli nie określono, plik <pomijania project-directory>/CompatibilitySuppressions.xml jest odczytywany (jeśli istnieje).
Właściwość ApiCompatSuppressionOutputFile określa ścieżkę do pliku pomijania, który ma być zapisywany, gdy <ApiCompatGenerateSuppressionFile> ma wartość true. Jeśli nie zostanie określony, zostanie użyty pierwszy ApiCompatSuppressionFile element.
EnablePackageValidation
Właściwość EnablePackageValidation umożliwia serię weryfikacji pakietu po zadaniu Pack . Aby uzyskać więcej informacji, zobacz Walidacja pakietu.
Gdy jest ustawiona trueEnableStrictModeForBaselineValidation wartość , właściwość włącza tryb ścisły dla kontroli punktu odniesienia pakietu. Wartość domyślna to false.
EnableStrictModeForCompatibleFrameworksInPackage
Gdy jest ustawiona trueEnableStrictModeForCompatibleFrameworksInPackage wartość , właściwość włącza tryb ścisły dla zestawów, które są zgodne na podstawie ich struktury docelowej. Wartość domyślna to false.
EnableStrictModeForCompatibleTfms
Po ustawieniu trueEnableStrictModeForCompatibleTfms wartości właściwość włącza tryb ścisły dla zestawów kontraktów i implementacji dla wszystkich zgodnych platform docelowych. Wartość domyślna to true.
NoWarn
Właściwość NoWarn określa identyfikatory diagnostyczne do pomijania.
Element PackageValidationBaselineFrameworkToIgnore określa platformę docelową do ignorowania z pakietu bazowego. Ciąg struktury musi dokładnie odpowiadać nazwie folderu w pakiecie odniesienia.
Właściwość PackageValidationBaselineName określa nazwę pakietu bazowego w celu zweryfikowania bieżącego pakietu. Jeśli wartość jest nieokreślona, zostanie użyta PackageId .
PackageValidationBaselineVersion
Właściwość PackageValidationBaselineVersion określa wersję pakietu bazowego w celu zweryfikowania bieżącego pakietu.
PackageValidationReferencePath
Element PackageValidationReferencePath określa ścieżkę katalogu, w której można znaleźć zestaw odwołania na serwer TFM.
Właściwość RoslynAssembliesPath określa ścieżkę do katalogu zawierającego zestawy Microsoft.CodeAnalysis, których chcesz użyć. Tę właściwość należy ustawić tylko wtedy, gdy chcesz przetestować go przy użyciu nowszego kompilatora niż to, co znajduje się w zestawie SDK.
Właściwości związane z publikowaniem
Następujące właściwości programu MSBuild są udokumentowane w tej sekcji:
Właściwość AppendTargetFrameworkToOutputPath określa, czy moniker platformy docelowej (TFM) jest dołączany do ścieżki wyjściowej (która jest zdefiniowana przez outputPath). Zestaw SDK platformy .NET automatycznie dołącza platformę docelową, a jeśli jest obecny, identyfikator środowiska uruchomieniowego do ścieżki wyjściowej. Ustawienie AppendTargetFrameworkToOutputPath uniemożliwia false dołączanie serwera TFM do ścieżki wyjściowej. Jednak bez serwera TFM w ścieżce wyjściowej wiele artefaktów kompilacji może zastąpić siebie nawzajem.
Na przykład w przypadku aplikacji .NET 5 ścieżka wyjściowa zmienia się z bin\Debug\net5.0 na bin\Debug przy użyciu następującego ustawienia:
Właściwość AppendRuntimeIdentifierToOutputPath określa, czy identyfikator środowiska uruchomieniowego (RID) jest dołączany do ścieżki wyjściowej. Zestaw SDK platformy .NET automatycznie dołącza platformę docelową, a jeśli jest obecny, identyfikator środowiska uruchomieniowego do ścieżki wyjściowej. Ustawienie AppendRuntimeIdentifierToOutputPath uniemożliwia false dołączanie identyfikatora RID do ścieżki wyjściowej.
Na przykład w przypadku aplikacji .NET 5 i identyfikatora RID parametru win-x64następujące ustawienie zmienia ścieżkę wyjściową z bin\Debug\net5.0\win-x64 na bin\Debug\net5.0:
Właściwość jest przydatna CopyLocalLockFileAssemblies w przypadku projektów wtyczek, które mają zależności od innych bibliotek. Jeśli ustawisz tę właściwość na truewartość , wszystkie przechodnie zależności pakietów NuGet zostaną skopiowane do katalogu wyjściowego. Oznacza to, że możesz użyć danych wyjściowych dotnet build polecenia , aby uruchomić wtyczkę na dowolnej maszynie.
Wartość domyślna CopyLocalLockFileAssemblies może się różnić w zależności od typu danych wyjściowych. Na przykład w przypadku bibliotek klas wartość domyślna to false, a w przypadku aplikacji konsolowych wartość domyślna to true. Tę właściwość można jawnie określić, aby w razie potrzeby zastąpić wartość domyślną.
Porada
Alternatywnie możesz użyć dotnet publish polecenia , aby opublikować bibliotekę klas. Aby uzyskać więcej informacji, zobacz dotnet publish (Publikowanie dotnet).
ErrorOnDuplicatePublishOutputFiles
Właściwość ErrorOnDuplicatePublishOutputFiles odnosi się do tego, czy zestaw SDK generuje błąd NETSDK1148, gdy program MSBuild wykrywa zduplikowane pliki w danych wyjściowych publikowania, ale nie może określić, które pliki mają być usuwane.
ErrorOnDuplicatePublishOutputFiles Ustaw właściwość na wartość false , jeśli nie chcesz, aby błąd został wygenerowany.
Ta właściwość została wprowadzona na platformie .NET 6.
GenerateRuntimeConfigDevFile
Począwszy od zestawu .NET 6 SDK, plik [Appname].runtimesettings.dev.json nie jest już generowany domyślnie w czasie kompilacji. Jeśli nadal chcesz wygenerować ten plik, ustaw GenerateRuntimeConfigDevFile właściwość na true.
Właściwość GenerateRuntimeConfigurationFiles określa, czy opcje konfiguracji środowiska uruchomieniowego są kopiowane z pliku runtimeconfig.template.json do pliku [appname].runtimeconfig.json . W przypadku aplikacji, które wymagają pliku runtimeconfig.json , czyli tych, których OutputType właściwość ma Exewartość , ta właściwość jest domyślnie ustawiona na true.
Właściwość GenerateSatelliteAssembliesForCore określa, czy zestawy satelitarne są generowane przy użyciu csc.exe lub Al.exe (Konsolidator zestawów) w projektach programu .NET Framework. (Projekty .NET Core i .NET 5+ zawsze używają csc.exe do generowania zestawów satelitarnych). W przypadku projektów programu .NET Framework zestawy satelitarne są domyślnie tworzone przez al.exe.
GenerateSatelliteAssembliesForCore Ustawiając właściwość na true, zestawy satelitarne są tworzone przez csc.exe zamiast tego. Użycie csc.exe może być korzystne w następujących sytuacjach:
Właściwość IsPublishable umożliwia Publish uruchamianie elementu docelowego. Ta właściwość dotyczy tylko procesów korzystających z plików .*proj i Publish obiektu docelowego, takich jak polecenie dotnet publish . Nie ma to wpływu na publikowanie w programie Visual Studio, który używa PublishOnly elementu docelowego. Domyślna wartość to true.
Ta właściwość jest przydatna w przypadku uruchamiania dotnet publish w pliku rozwiązania, ponieważ umożliwia automatyczne wybieranie projektów, które mają zostać opublikowane.
Właściwość PreserveCompilationContext umożliwia skompilowaniu lub opublikowaniu aplikacji więcej kodu w czasie wykonywania przy użyciu tych samych ustawień, które były używane w czasie kompilacji. Zestawy przywoływane w czasie kompilacji zostaną skopiowane do podkatalogu ref katalogu wyjściowego. Nazwy zestawów odwołań są przechowywane w pliku .deps.json aplikacji wraz z opcjami przekazanymi do kompilatora. Te informacje można pobrać przy użyciu DependencyContext.CompileLibraries właściwości i DependencyContext.CompilationOptions .
Ta funkcja jest najczęściej używana wewnętrznie przez strony ASP.NET Core MVC i Razor do obsługi kompilacji plików Razor w czasie wykonywania.
Właściwość jest podobna PreserveCompilationReferences do właściwości PreserveCompilationContext , z tą różnicą, że kopiuje tylko przywoływalne zestawy do katalogu publikowania, a nie do pliku .deps.json .
Aby uzyskać więcej informacji, zobacz Właściwości zestawu SDK Razor.
ProduceReferenceAssemblyInOutDir
W programie .NET 5 i starszych wersjach zestawy odwołań są zawsze zapisywane w OutDir katalogu. W programie .NET 6 i nowszych wersjach można użyć ProduceReferenceAssemblyInOutDir właściwości , aby kontrolować, czy zestawy odwołań są zapisywane w OutDir katalogu. Wartość domyślna to false, a zestawy odwołań są zapisywane tylko w IntermediateOutputPath katalogu. Ustaw wartość na , aby true zapisywać zestawy odwołań do OutDir katalogu.
Gdy ta właściwość to true, plik dokumentacji XML dla projektu, jeśli został wygenerowany, jest uwzględniony w danych wyjściowych publikowania dla projektu. Ta właściwość jest domyślnie ustawiona na true.
Porada
Ustaw wartość GenerateDocumentationFile , aby true wygenerować plik dokumentacji XML w czasie kompilacji.
PublishDocumentationFiles
Ta właściwość jest flagą włączania dla kilku innych właściwości, które kontrolują, czy różnego rodzaju pliki dokumentacji XML są domyślnie kopiowane do katalogu publikowania, a mianowicie PublishDocumentationFile i PublishReferencesDocumentationFiles. Jeśli te właściwości nie są ustawione, a ta właściwość jest ustawiona, te właściwości będą domyślnie mieć wartość true. Ta właściwość jest domyślnie ustawiona na true.
PublishReferencesDocumentationFiles
Gdy ta właściwość to true, pliki dokumentacji XML dla odwołań projektu są kopiowane do katalogu publikowania, a nie tylko zasobów czasu wykonywania, takich jak pliki DLL. Ta właściwość jest domyślnie ustawiona na true.
Publikowanie wersji
Właściwość PublishRelease informuje dotnet publish o użyciu Release konfiguracji domyślnie zamiast Debug konfiguracji. Ta właściwość została wprowadzona na platformie .NET 7.
Począwszy od zestawu .NET 8 SDK, PublishRelease wartość domyślna to dla projektów przeznaczonych dla platformy true .NET 8 lub nowszej. Aby uzyskać więcej informacji, zobacz "dotnet publish" używa konfiguracji wydania.
Ta właściwość nie ma wpływu na zachowanie dotnet build /t:Publishprogramu i zmienia konfigurację tylko podczas publikowania za pośrednictwem interfejsu wiersza polecenia platformy .NET.
Tylko zestaw .NET 7 SDK: aby użyć PublishRelease w projekcie, który jest częścią rozwiązania programu Visual Studio, należy ustawić zmienną środowiskową DOTNET_CLI_ENABLE_PUBLISH_RELEASE_FOR_SOLUTIONS na true (lub dowolną inną wartość). Podczas publikowania rozwiązania z włączoną tą zmienną wartość projektu PublishRelease wykonywalnego ma pierwszeństwo i przepływa nową konfigurację domyślną do innych projektów w rozwiązaniu. Jeśli rozwiązanie zawiera wiele projektów wykonywalnych lub najwyższego poziomu z różnymi wartościami PublishRelease, rozwiązanie nie zostanie pomyślnie opublikowane. W przypadku rozwiązań, które mają wiele projektów, użycie tego ustawienia zwiększa czas wymagany do opublikowania.
PublikowanieselfContained
Właściwość PublishSelfContained informuje dotnet publish o opublikowaniu aplikacji jako aplikacji samodzielnej. Ta właściwość jest przydatna, gdy nie można użyć argumentu --self-containedpolecenia dotnet publish — na przykład podczas publikowania na poziomie rozwiązania. W takim przypadku można dodać PublishSelfContained właściwość MSBuild do pliku project lub Directory.Build.Props .
Ta właściwość została wprowadzona na platformie .NET 7. Jest ona podobna do właściwości SelfContained , z tą różnicą, że jest specyficzna dla czasownika publish . Zaleca się użycie PublishSelfContained zamiast SelfContained.
Właściwość RollForward określa sposób wybierania środowiska uruchomieniowego przez aplikację, gdy dostępnych jest wiele wersji środowiska uruchomieniowego. Ta wartość jest wynikiem danych wyjściowych .runtimeconfig.json jako rollForward ustawienia.
Ustaw RollForward na jedną z następujących wartości:
Wartość
Opis
Minor
Wartość domyślna , jeśli nie zostanie określona. Przerzuć do najniższej wyższej wersji pomocniczej, jeśli brakuje żądanej wersji pomocniczej. Jeśli żądana wersja pomocnicza jest obecna, LatestPatch zostaną użyte zasady.
Major
Przejdź do następnej dostępnej nowszej wersji głównej i najniższej wersji pomocniczej, jeśli zażądano wersji głównej. Jeśli żądana wersja główna jest obecna, Minor zostaną użyte zasady.
LatestPatch
Przerzuć do najwyższej wersji poprawki. Ta wartość wyłącza wycofywanie wersji pomocniczej.
LatestMinor
Przerzuć do najwyższej wersji pomocniczej, nawet jeśli zażądano wersji pomocniczej.
LatestMajor
Przerzuć do najwyższej wersji głównej i najwyższej wersji pomocniczej, nawet jeśli zażądano wersji głównej.
Disable
Nie przesyłaj dalej, powiąż tylko z określoną wersją. Te zasady nie są zalecane do użytku ogólnego, ponieważ wyłącza możliwość przekazywania do najnowszych poprawek. Ta wartość jest zalecana tylko do testowania.
Właściwość RuntimeFrameworkVersion określa wersję środowiska uruchomieniowego do użycia podczas publikowania. Określ wersję środowiska uruchomieniowego:
Podczas publikowania aplikacji zależnej od platformy ta wartość określa wymaganą minimalną wersję. Podczas publikowania aplikacji samodzielnej ta wartość określa dokładną wymaganą wersję.
Właściwość RuntimeIdentifiers umożliwia określenie rozdzielanej średnikami listy identyfikatorów środowiska uruchomieniowego (RID) dla projektu. Użyj tej właściwości, jeśli musisz opublikować wiele środowisk uruchomieniowych.
RuntimeIdentifiers Jest używany w czasie przywracania, aby upewnić się, że odpowiednie zasoby znajdują się na grafie.
Porada
RuntimeIdentifier (pojedyncza) może zapewnić szybsze kompilacje, gdy wymagane jest tylko jedno środowisko uruchomieniowe.
Właściwość SatelliteResourceLanguages umożliwia określenie języków, dla których mają być zachowywane zestawy zasobów satelitarnych podczas kompilacji i publikowania. Wiele pakietów NuGet obejmuje zlokalizowane zestawy satelitarne zasobów w głównym pakiecie. W przypadku projektów odwołujących się do tych pakietów NuGet, które nie wymagają zlokalizowanych zasobów, zlokalizowane zestawy mogą niepotrzebnie zawyżać rozmiar kompilacji i publikowania danych wyjściowych.
SatelliteResourceLanguages Dodając właściwość do pliku projektu, tylko zlokalizowane zestawy dla języków, które określisz, zostaną uwzględnione w danych wyjściowych kompilacji i publikowania. Na przykład w poniższym pliku projektu zostaną zachowane tylko zestawy satelitarne zasobów angielskich (USA) i niemiecki (Niemcy).
Właściwość SelfContained informuje i dotnet build kompiluje dotnet publish lub publikuje aplikację jako samodzielną aplikację. Ta właściwość jest przydatna, gdy nie można użyć argumentu --self-containedz poleceniem dotnet — na przykład podczas publikowania na poziomie rozwiązania. W takim przypadku można dodać SelfContained właściwość MSBuild do pliku project lub Directory.Build.Props .
Ta właściwość jest podobna do właściwości PublishSelfContained . Zaleca się użycie PublishSelfContained zamiast SelfContained , gdy jest to możliwe.
Właściwość UseAppHost określa, czy dla wdrożenia jest tworzony natywny plik wykonywalny. Natywny plik wykonywalny jest wymagany w przypadku wdrożeń samodzielnie zawartych. Plik wykonywalny zależny od platformy jest tworzony domyślnie. Ustaw właściwość na UseAppHost wartość , aby false wyłączyć generowanie pliku wykonywalnego.
Aby uzyskać więcej informacji na temat wdrażania, zobacz Wdrażanie aplikacji .NET.
Właściwości związane z przycinaniem
Wiele właściwości programu MSBuild jest dostępnych w celu dostosowania przycinania, co jest funkcją, która przycina nieużywany kod z wdrożeń samodzielnie zawartych. Te opcje zostały szczegółowo omówione w temacie Opcje przycinania. Poniższa tabela zawiera skróconą dokumentację.
Właściwość
Wartości
Opis
PublishTrimmed
true lub false
Określa, czy przycinanie jest włączone podczas publikowania.
TrimMode
full lub partial
Wartość domyślna to full. Kontroluje stopień szczegółowości przycinania.
SuppressTrimAnalysisWarnings
true lub false
Określa, czy są generowane ostrzeżenia analizy przycinania.
EnableTrimAnalyzer
true lub false
Określa, czy jest generowany podzbiór ostrzeżeń analizy przycinania. Analizę można włączyć nawet wtedy, gdy PublishTrimmed jest ustawiona wartość false.
ILLinkTreatWarningsAsErrors
true lub false
Określa, czy ostrzeżenia przycinania są traktowane jako błędy. Na przykład możesz ustawić tę właściwość na false wartość , gdy TreatWarningsAsErrors jest ustawiona wartość true.
TrimmerSingleWarn
true lub false
Określa, czy wyświetlane jest pojedyncze ostrzeżenie dla zestawu, czy wszystkie ostrzeżenia.
TrimmerRemoveSymbols
true lub false
Określa, czy wszystkie symbole są usuwane z przyciętej aplikacji.
Właściwości związane z kompilacją
Następujące właściwości programu MSBuild są udokumentowane w tej sekcji:
Opcje kompilatora języka C#, takie jak LangVersion i Nullable, można również określić jako właściwości programu MSBuild w pliku projektu. Aby uzyskać więcej informacji, zobacz Opcje kompilatora języka C#.
ContinuousIntegrationBuild
Właściwość wskazuje, czy kompilacja ContinuousIntegrationBuild jest uruchamiana na serwerze ciągłej integracji. W przypadku ustawienia na truewartość ta właściwość włącza ustawienia, które mają zastosowanie tylko do oficjalnych kompilacji, w przeciwieństwie do kompilacji lokalnych na maszynie dewelopera. Na przykład przechowywane ścieżki plików są znormalizowane dla oficjalnych kompilacji. Jednak na lokalnej maszynie programistycznej debuger nie może znaleźć lokalnych plików źródłowych, jeśli ścieżki plików są znormalizowane.
Uwaga
Obecnie ustawienie tej właściwości działa true tylko w przypadku dodania odwołania do określonego lub elementu. Aby uzyskać więcej informacji, zobacz dotnet/roslyn problem 55860.
Możesz użyć zmiennej systemu ciągłej integracji, aby warunkowo ustawić ContinuousIntegrationBuild właściwość. Na przykład nazwa zmiennej dla usługi Azure Pipelines to TF_BUILD:
Gdy ta właściwość jest ustawiona na truewartość , wszystkie pliki symboli (znane również jako pliki PDB) z PackageReference elementów w projekcie są kopiowane do danych wyjściowych kompilacji. Te pliki mogą zapewnić bardziej informacyjne ślady stosu dla wyjątków i ułatwić zrozumienie zrzutów pamięci i śladów uruchomionej aplikacji. Jednak uwzględnienie tych plików powoduje zwiększenie rozmiaru pakietu wdrożenia.
Ta właściwość została wprowadzona w zestawie .NET SDK 7.0.100, ale domyślnie nie jest określona.
CopyDocumentationFilesFromPackages
Gdy ta właściwość jest ustawiona na truewartość , wszystkie wygenerowane pliki dokumentacji XML z PackageReference elementów w projekcie są kopiowane do danych wyjściowych kompilacji. Należy pamiętać, że włączenie tej funkcji spowoduje zwiększenie rozmiaru pakietu wdrożenia.
Ta właściwość została wprowadzona w zestawie .NET SDK 7.0.100, ale domyślnie nie jest określona.
DisableImplicitFrameworkDefines
Właściwość DisableImplicitFrameworkDefines określa, czy zestaw SDK generuje symbole preprocesora dla platformy docelowej i platformy dla projektu platformy .NET. Gdy ta właściwość jest ustawiona na false lub nie jest ustawiona (która jest wartością domyślną) symbole preprocesora są generowane dla:
Struktura bez wersji (NETFRAMEWORK, NETSTANDARD, NET)
Struktura z wersją (NET48, NETSTANDARD2_0, NET6_0)
Struktura z minimalną granicą wersji (NET48_OR_GREATER, NETSTANDARD2_0_OR_GREATER, NET6_0_OR_GREATER)
Aby uzyskać więcej informacji na temat obiektów monikerów platform docelowych i tych niejawnych symboli preprocesora, zobacz Platformy docelowe.
Ponadto jeśli określisz strukturę docelową specyficzną dla systemu operacyjnego w projekcie (na przykład net6.0-android), zostaną wygenerowane następujące symbole preprocesora:
Platforma bez wersji (ANDROID, IOS, WINDOWS)
Platforma z wersją (IOS15_1)
Platforma z minimalną granicą wersji (IOS15_1_OR_GREATER)
Aby uzyskać więcej informacji na temat programu monikers platform docelowych specyficznych dla systemu operacyjnego, zobacz TfMs specyficzne dla systemu operacyjnego.
Jeśli platforma docelowa oznacza obsługę starszych platform docelowych, są emitowane symbole preprocesora dla tych starszych struktur. Na przykład net6.0oznacza obsługę net5.0 i tak dalej w drodze powrotnej do .netcoreapp1.0. Dlatego dla każdej z tych platform docelowych zostanie zdefiniowana struktura z minimalnym symbolem ograniczenia wersji.
DocumentationFile
Właściwość DocumentationFile umożliwia określenie nazwy pliku XML zawierającego dokumentację biblioteki. Aby funkcja IntelliSense działała poprawnie z dokumentacją, nazwa pliku musi być taka sama jak nazwa zestawu i musi znajdować się w tym samym katalogu co zestaw. Jeśli nie określisz tej właściwości, ale ustawisz wartość GenerateDocumentationFile na true, nazwa pliku dokumentacji jest domyślnie nazwą zestawu, ale z rozszerzeniem .xml pliku. Z tego powodu często łatwiej jest pominąć tę właściwość i zamiast tego użyć właściwości GenerateDocumentationFile.
Jeśli określisz tę właściwość, ale ustawisz wartość GenerateDocumentationFile na false, kompilator nie generuje pliku dokumentacji. Jeśli określisz tę właściwość i pominięto właściwość GenerateDocumentationFile, kompilator generuje plik dokumentacji.
Właściwość EmbeddedResourceUseDependentUponConvention określa, czy nazwy plików manifestu zasobu są generowane na podstawie informacji o typie w plikach źródłowych, które są współlokowane z plikami zasobów. Jeśli na przykład plik Form1.resx znajduje się w tym samym folderze co Form1.cs i EmbeddedResourceUseDependentUponConvention jest ustawiony na truewartość , wygenerowany plik resources przyjmuje nazwę z pierwszego typu zdefiniowanego w Form1.cs. Jeśli MyNamespace.Form1 jest pierwszym typem zdefiniowanym w Form1.cs, wygenerowana nazwa pliku to MyNamespace.Form1.resources.
Uwaga
Jeśli LogicalNamedla ManifestResourceName elementu określono , lub DependentUpon metadane, wygenerowana nazwa pliku manifestu dla tego pliku zasobu jest oparta na EmbeddedResourcetych metadanych.
Domyślnie w nowym projekcie platformy .NET przeznaczonym dla platformy .NET Core 3.0 lub nowszej wersji ta właściwość jest ustawiona na truewartość . Jeśli ustawiono wartość false, a dla elementu w pliku projektu nie LogicalNameokreślono ManifestResourceName żadnych metadanych , DependentUponEmbeddedResource nazwa pliku manifestu zasobu jest oparta na głównej przestrzeni nazw projektu i względnej ścieżce pliku do pliku resx. Aby uzyskać więcej informacji, zobacz How resource manifest files are named (Jak nazwane są pliki manifestu zasobu).
Właściwość EnablePreviewFeatures określa, czy projekt zależy od interfejsów API, czy zestawów, które są ozdobione atrybutem RequiresPreviewFeaturesAttribute . Ten atrybut służy do oznaczania, że interfejs API lub zestaw używa funkcji, które są uważane za w wersji zapoznawczej dla używanej wersji zestawu SDK. Funkcje w wersji zapoznawczej nie są obsługiwane i mogą zostać usunięte w przyszłej wersji. Aby włączyć korzystanie z funkcji w wersji zapoznawczej, ustaw właściwość na Truewartość .
Gdy projekt zawiera tę właściwość ustawioną na Truewartość , do pliku AssemblyInfo.cs zostanie dodany następujący atrybut na poziomie zestawu:
C#
[assembly: RequiresPreviewFeatures]
Analizator ostrzega, czy ten atrybut występuje w zależnościach dla projektów, w których EnablePreviewFeatures nie ustawiono wartości True.
Autorzy bibliotek, którzy zamierzają dostarczać zestawy w wersji zapoznawczej, powinni ustawić tę właściwość na True. Jeśli zestaw musi być dostarczony z kombinacją interfejsów API w wersji zapoznawczej i bez wersji zapoznawczej, zobacz sekcję GenerateRequiresPreviewFeaturesAttribute poniżej.
WłączWindowsTargeting
EnableWindowsTargeting Ustaw właściwość na wartość , aby true tworzyć aplikacje systemu Windows (na przykład aplikacje Windows Forms lub Windows Presentation Foundation) na platformie innej niż Windows. Jeśli nie ustawisz tej właściwości na truewartość , zostanie wyświetlone ostrzeżenie kompilacji NETSDK1100. Ten błąd występuje, ponieważ pakiety określania wartości docelowej i pakietów środowiska uruchomieniowego nie są automatycznie pobierane na platformach, które nie są obsługiwane. Ustawiając tę właściwość, te pakiety są pobierane podczas określania wartości krzyżowych.
Uwaga
Ta właściwość jest obecnie zalecana, aby umożliwić programowanie na platformach innych niż Windows. Jednak gdy aplikacja jest gotowa do wydania, powinna zostać skompilowana w systemie Windows. W przypadku kompilacji na platformie innej niż Windows dane wyjściowe mogą nie być takie same jak podczas kompilowania w systemie Windows. W szczególności plik wykonywalny nie jest oznaczony jako aplikacja systemu Windows (co oznacza, że zawsze uruchomi okno konsoli) i nie będzie mieć osadzonej ikony.
Właściwość GenerateDocumentationFile określa, czy kompilator generuje plik dokumentacji XML dla biblioteki. Jeśli ustawisz tę właściwość na true i nie określisz nazwy pliku za pomocą właściwości DocumentationFile, wygenerowany plik XML zostanie umieszczony w tym samym katalogu wyjściowym co zestaw i ma taką samą nazwę pliku (ale z rozszerzeniem .xml ).
Właściwość GenerateRequiresPreviewFeaturesAttribute jest ściśle powiązana z właściwością EnablePreviewFeatures . Jeśli biblioteka używa funkcji w wersji zapoznawczej, ale nie chcesz, aby cały zestaw został oznaczony atrybutem RequiresPreviewFeaturesAttribute , co wymagałoby od użytkowników włączenia funkcji w wersji zapoznawczej, ustaw tę właściwość na Falsewartość .
Jeśli ustawisz GenerateRequiresPreviewFeaturesAttribute właściwość na False, musisz mieć pewność, że wszystkie publiczne interfejsy API, które opierają się na funkcjach w wersji zapoznawczej z RequiresPreviewFeaturesAttribute.
OptimizeImplicitlyTriggeredBuild
Aby przyspieszyć czas kompilacji, kompilacje, które są niejawnie wyzwalane przez program Visual Studio, pomijają analizę kodu, w tym analizę dopuszczającą wartość null. Program Visual Studio wyzwala niejawną kompilację podczas uruchamiania testów, na przykład. Jednak niejawne kompilacje są optymalizowane tylko wtedy, gdy TreatWarningsAsErrors nie truejest . Jeśli ustawiono TreatWarningsAsErrors wartość , true ale nadal chcesz, aby kompilacje wyzwalane niejawnie zostały zoptymalizowane, możesz ustawić wartość OptimizeImplicitlyTriggeredBuildTrue. Aby wyłączyć optymalizację kompilacji dla niejawnie wyzwalanych kompilacji, ustaw wartość OptimizeImplicitlyTriggeredBuildFalse.
Właściwość DisableRuntimeMarshalling umożliwia określenie, że chcesz wyłączyć obsługę marshalingu środowiska uruchomieniowego dla projektu. Jeśli ta właściwość jest ustawiona na truewartość , DisableRuntimeMarshallingAttribute element zostanie dodany do zestawu, a wszystkie wywołania P/Invoke lub międzyoperacyjności oparte na delegatach będą zgodne z regułami dla wyłączonego marshalingu środowiska uruchomieniowego.
DefaultItemExcludes Użyj właściwości , aby zdefiniować wzorce glob dla plików i folderów, które powinny zostać wykluczone z elementów dołączania, wykluczania i usuwania symboli globs. Domyślnie foldery ./bin i ./obj są wykluczone z wzorców globu.
DefaultItemExcludesInProjectFolder Użyj właściwości , aby zdefiniować wzorce glob dla plików i folderów w folderze projektu, które powinny zostać wykluczone z elementów dołączania, wykluczania i usuwania symboli globs. Domyślnie foldery rozpoczynające się od kropki (.), takie jak .git i .vs, są wykluczane z wzorców globu.
Ta właściwość jest bardzo podobna DefaultItemExcludes do właściwości, z tą różnicą, że uwzględnia tylko pliki i foldery w folderze projektu. Jeśli wzorzec globu przypadkowo pasuje do elementów spoza folderu projektu ze ścieżką względną, użyj DefaultItemExcludesInProjectFolder właściwości zamiast DefaultItemExcludes właściwości .
Właściwość EnableDefaultItems określa, czy elementy kompilowania, osadzone elementy zasobów i None elementy są niejawnie zawarte w projekcie. Domyślna wartość to true. Ustaw właściwość na EnableDefaultItems wartość , aby false wyłączyć wszystkie niejawne dołączanie plików.
Właściwość EnableDefaultCompileItems określa, czy elementy kompilacji są niejawnie zawarte w projekcie. Domyślna wartość to true. Ustaw właściwość na EnableDefaultCompileItems wartość , aby false wyłączyć niejawne dołączanie *.cs i innych plików rozszerzeń języka.
Właściwość EnableDefaultEmbeddedResourceItems określa, czy osadzone elementy zasobów są niejawnie uwzględnione w projekcie. Domyślna wartość to true. Ustaw właściwość na EnableDefaultEmbeddedResourceItems wartość , aby false wyłączyć niejawne dołączanie osadzonych plików zasobów.
Właściwość EnableDefaultNoneItems określa, czy None elementy (pliki, które nie mają roli w procesie kompilacji) są niejawnie zawarte w projekcie. Domyślna wartość to true. Ustaw właściwość na EnableDefaultNoneItems wartość , aby false wyłączyć niejawne dołączanie None elementów.
Właściwość AnalysisLevel umożliwia określenie zestawu analizatorów kodu do uruchomienia zgodnie z wydaniem platformy .NET. Każda wersja platformy .NET ma zestaw reguł analizy kodu. W tym zestawie reguły, które są domyślnie włączone dla tej wersji, analizują kod. Jeśli na przykład uaktualnisz platformę .NET 8 do platformy .NET 9, ale nie chcesz, aby domyślny zestaw reguł analizy kodu zmienił się, ustaw wartość AnalysisLevel8.
Opcjonalnie można określić wartość złożoną dla tej właściwości, która określa również, jak agresywnie włączyć reguły. Wartości złożone mają postać <version>-<mode>, gdzie <mode> wartość jest jedną z wartości AnalysisMode . W poniższym przykładzie użyto preview wersji analizatorów kodu i włączono recommended zestaw reguł.
W przeciwnym razie ta właściwość zostanie pominięta, chyba że jawnie dodasz ją do pliku projektu.
W poniższej tabeli przedstawiono wartości, które można określić.
Wartość
Znaczenie
latest
Używane są najnowsze analizatory kodu, które zostały wydane. Jest to opcja domyślna.
latest-<mode>
Używane są najnowsze analizatory kodu, które zostały wydane. Wartość <mode> określa, które reguły są włączone.
preview
Używane są najnowsze analizatory kodu, nawet jeśli są w wersji zapoznawczej.
preview-<mode>
Używane są najnowsze analizatory kodu, nawet jeśli są w wersji zapoznawczej. Wartość <mode> określa, które reguły są włączone.
9.0
Używany jest zestaw reguł, które były dostępne dla wersji platformy .NET 9, nawet jeśli są dostępne nowsze reguły.
9.0-<mode>
Używany jest zestaw reguł, które były dostępne dla wersji platformy .NET 9, nawet jeśli są dostępne nowsze reguły. Wartość <mode> określa, które reguły są włączone.
9
Używany jest zestaw reguł, które były dostępne dla wersji platformy .NET 9, nawet jeśli są dostępne nowsze reguły.
9-<mode>
Używany jest zestaw reguł, które były dostępne dla wersji platformy .NET 9, nawet jeśli są dostępne nowsze reguły. Wartość <mode> określa, które reguły są włączone.
8.0
Używany jest zestaw reguł, które były dostępne dla wersji .NET 8, nawet jeśli są dostępne nowsze reguły.
8.0-<mode>
Używany jest zestaw reguł, które były dostępne dla wersji .NET 8, nawet jeśli są dostępne nowsze reguły. Wartość <mode> określa, które reguły są włączone.
8
Używany jest zestaw reguł, które były dostępne dla wersji .NET 8, nawet jeśli są dostępne nowsze reguły.
8-<mode>
Używany jest zestaw reguł, które były dostępne dla wersji .NET 8, nawet jeśli są dostępne nowsze reguły. Wartość <mode> określa, które reguły są włączone.
7.0
Używany jest zestaw reguł, które były dostępne dla wersji .NET 7, nawet jeśli są dostępne nowsze reguły.
7.0-<mode>
Używany jest zestaw reguł, które były dostępne dla wersji .NET 7, nawet jeśli są dostępne nowsze reguły. Wartość <mode> określa, które reguły są włączone.
7
Używany jest zestaw reguł, które były dostępne dla wersji .NET 7, nawet jeśli są dostępne nowsze reguły.
7-<mode>
Używany jest zestaw reguł, które były dostępne dla wersji .NET 7, nawet jeśli są dostępne nowsze reguły. Wartość <mode> określa, które reguły są włączone.
Uwaga
Jeśli ustawisz wartość na wartość , ta właściwość wpływa na true stylu kodu (IDEXXXX) (oprócz reguł jakości kodu).
Jeśli ustawisz wartość złożoną dla AnalysisLevelparametru , nie musisz określać elementu AnalysisMode. Jeśli jednak to zrobisz, AnalysisLevel pierwszeństwo ma wartość AnalysisMode.
Ta właściwość nie ma wpływu na analizę kodu w projektach, które nie odwołują się do zestawu SDK projektu, na przykład starszych projektów .NET Framework odwołujących się do pakietu NuGet Microsoft.CodeAnalysis.NetAnalyzers.
Kategoria AnalysisLevel<>
Ta właściwość jest taka sama jak AnalysisLevel, z tą różnicą, że dotyczy tylko określonej kategorii reguł analizy kodu. Ta właściwość umożliwia używanie innej wersji analizatorów kodu dla określonej kategorii lub włączania lub wyłączania reguł na innym poziomie do innych kategorii reguł. Jeśli pominiesz tę właściwość dla określonej kategorii reguł, domyślnie zostanie ustawiona wartość AnalysisLevel . Dostępne wartości są takie same jak w przypadku elementu AnalysisLevel.
Zestaw .NET SDK jest dostarczany ze wszystkimi regułami jakości kodu "CA". Domyślnie tylko niektóre reguły są włączone jako ostrzeżenia kompilacji w każdej wersji platformy .NET. Właściwość AnalysisMode umożliwia dostosowanie zestawu reguł, które są domyślnie włączone. Możesz przełączyć się na bardziej agresywny tryb analizy, w którym możesz zrezygnować z reguł pojedynczo lub bardziej konserwatywny tryb analizy, w którym można wyrazić zgodę na określone reguły. Jeśli na przykład chcesz włączyć wszystkie reguły jako ostrzeżenia kompilacji, ustaw wartość na All.
W poniższej tabeli przedstawiono dostępne wartości opcji. Są one wymienione w kolejności rosnącej liczby reguł, które włączają.
Wartość
Opis
None
Wszystkie reguły są wyłączone. Możesz selektywnie wyrazić zgodę na poszczególne reguły, aby je włączyć.
Default
Tryb domyślny, w którym niektóre reguły są włączone jako ostrzeżenia kompilacji, niektóre reguły są włączone jako sugestie środowiska IDE programu Visual Studio, a pozostałe są wyłączone.
Minimum
Bardziej agresywny tryb niż Default tryb. Niektóre sugestie, które są zdecydowanie zalecane w przypadku wymuszania kompilacji, są włączone jako ostrzeżenia kompilacji. Aby sprawdzić, które reguły obejmują, sprawdź %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.globalconfig. (W przypadku platformy .NET 7 i starszych wersji rozszerzenie pliku jest .editorconfig.
Recommended
Bardziej agresywny tryb niż Minimum tryb, w którym więcej reguł jest włączanych jako ostrzeżenia kompilacji. Aby sprawdzić, które reguły obejmują, sprawdź %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.globalconfig. (W przypadku platformy .NET 7 i starszych wersji rozszerzenie pliku jest .editorconfig.
All
Wszystkie reguły są włączone jako ostrzeżenia kompilacji*. Możesz selektywnie zrezygnować z poszczególnych reguł, aby je wyłączyć.
* Następujące reguły nie są ). Te starsze reguły mogą być przestarzałe w przyszłej wersji. Można je jednak nadal włączać indywidualnie przy użyciu dotnet_diagnostic.CAxxxx.severity = <severity> wpisu.
Uwaga
Jeśli ustawisz wartość na wartość , ta właściwość wpływa na true stylu kodu (IDEXXXX) (oprócz reguł jakości kodu).
Jeśli używasz wartości złożonej dla elementu AnalysisLevel, <AnalysisLevel>9-recommended</AnalysisLevel>na przykład , możesz całkowicie pominąć tę właściwość. Jeśli jednak określisz obie właściwości, AnalysisLevel pierwszeństwo ma wartość AnalysisMode.
Ta właściwość nie ma wpływu na analizę kodu w projektach, które nie odwołują się do zestawu SDK projektu, na przykład starszych projektów .NET Framework odwołujących się do pakietu NuGet Microsoft.CodeAnalysis.NetAnalyzers.
Kategoria AnalysisMode<>
Ta właściwość jest taka sama jak funkcja AnalysisMode, z tą różnicą, że dotyczy tylko określonej kategorii reguł analizy kodu. Ta właściwość umożliwia włączanie lub wyłączanie reguł na innym poziomie do innych kategorii reguł. Jeśli pominiesz tę właściwość dla określonej kategorii reguł, domyślnie zostanie ustawiona wartość AnalysisMode . Dostępne wartości są takie same jak w przypadku funkcji AnalysisMode.
Właściwość CodeAnalysisTreatWarningsAsErrors umożliwia skonfigurowanie, czy ostrzeżenia analizy jakości kodu (CAxxxx) powinny być traktowane jako ostrzeżenia i przerywać kompilację. Jeśli używasz flagi -warnaserror podczas tworzenia projektów, ostrzeżenia dotyczące analizy jakości kodu platformy .NET są również traktowane jako błędy. Jeśli nie chcesz, aby ostrzeżenia analizy jakości kodu były traktowane jako błędy, możesz ustawić CodeAnalysisTreatWarningsAsErrors właściwość MSBuild na false wartość w pliku projektu.
Analiza jakości kodu platformy .NET jest domyślnie włączona dla projektów przeznaczonych dla platformy .NET 5 lub nowszej wersji. Jeśli programujesz przy użyciu zestawu .NET 5+ SDK, możesz włączyć analizę kodu platformy .NET dla projektów w stylu zestawu SDK przeznaczonych dla wcześniejszych wersji platformy .NET, ustawiając EnableNETAnalyzers właściwość na true. Aby wyłączyć analizę kodu w dowolnym projekcie, ustaw tę właściwość na falsewartość .
Ta właściwość ma zastosowanie specjalnie do wbudowanych analizatorów w zestawie .NET 5+ SDK. Nie należy jej używać podczas instalowania pakietu analizy kodu NuGet.
EnforceCodeStyleInBuild
Analiza stylu kodu platformy .NET jest domyślnie wyłączona podczas kompilacji dla wszystkich projektów platformy .NET. Analizę stylu kodu dla projektów platformy .NET można włączyć, ustawiając EnforceCodeStyleInBuild właściwość na true.
Wszystkie reguły stylu kodu skonfigurowane jako ostrzeżenia lub błędy będą wykonywane na naruszeniach kompilacji i zgłaszania.
_SkipUpgradeNetAnalyzersNuGetWarning
Właściwość _SkipUpgradeNetAnalyzersNuGetWarning umożliwia skonfigurowanie, czy otrzymujesz ostrzeżenie, jeśli używasz analizatorów kodu z pakietu NuGet, który jest nieaktualny w porównaniu z analizatorami kodu w najnowszym zestawie SDK platformy .NET. Ostrzeżenie wygląda podobnie do następującego:
Zestaw .NET SDK ma nowsze analizatory w wersji "6.0.0" niż wersja "5.0.3" pakietu "Microsoft.CodeAnalysis.NetAnalyzers". Zaktualizuj lub usuń odwołanie do tego pakietu.
Aby usunąć to ostrzeżenie i nadal używać wersji analizatorów kodu w pakiecie NuGet, ustaw wartość _SkipUpgradeNetAnalyzersNuGetWarning na true w pliku projektu.
Właściwości konfiguracji środowiska uruchomieniowego
Niektóre zachowania środowiska uruchomieniowego można skonfigurować, określając właściwości programu MSBuild w pliku projektu aplikacji. Aby uzyskać informacje o innych sposobach konfigurowania zachowania środowiska uruchomieniowego, zobacz Ustawienia konfiguracji środowiska uruchomieniowego.
Właściwość ConcurrentGarbageCollection określa, czy funkcja odzyskiwania pamięci w tle (współbieżna) jest włączona. Ustaw wartość na wartość , aby false wyłączyć odzyskiwanie pamięci w tle. Aby uzyskać więcej informacji, zobacz Tło GC.
Właściwość InvariantGlobalization określa, czy aplikacja działa w trybie niezmiennym globalizacji, co oznacza, że nie ma dostępu do danych specyficznych dla kultury. Ustaw wartość tak, aby true uruchamiała się w trybie niezmiennym globalizacji. Aby uzyskać więcej informacji, zobacz Tryb niezmienny.
W wersjach .NET 6 i nowszych właściwość określa, PredefinedCulturesOnly czy aplikacje mogą tworzyć kultury inne niż niezmienna kultura, gdy jest włączony tryb niezmienny globalizacji. Wartość domyślna to true. Ustaw wartość false na wartość , aby umożliwić tworzenie dowolnej nowej kultury w trybie niezmiennym globalizacji.
Właściwość RetainVMGarbageCollection umożliwia skonfigurowanie modułu odśmieceń pamięci w celu umieszczania usuniętych segmentów pamięci na liście rezerwowej na potrzeby ich przyszłego użycia lub zwolnienia. Ustawienie wartości true na polecenie modułu odśmiecającego odśmiecenie, aby umieścić segmenty na liście rezerwowej. Aby uzyskać więcej informacji, zobacz Zachowywanie maszyny wirtualnej.
Właściwość ThreadPoolMaxThreads konfiguruje maksymalną liczbę wątków dla puli wątków roboczych. Aby uzyskać więcej informacji, zobacz Maksymalna liczba wątków.
Właściwość TieredCompilation określa, czy kompilator just in time (JIT) używa kompilacji warstwowej. Ustaw wartość na false wartość , aby wyłączyć kompilację warstwową. Aby uzyskać więcej informacji, zobacz Kompilacja warstwowa.
Właściwość TieredCompilationQuickJit określa, czy kompilator JIT używa szybkiego trybu JIT. Ustaw wartość , aby false wyłączyć szybki dostęp JIT. Aby uzyskać więcej informacji, zobacz Szybki dostęp JIT.
Właściwość TieredCompilationQuickJitForLoops określa, czy kompilator JIT używa szybkiego trybu JIT w metodach zawierających pętle. Ustaw wartość , aby true włączyć szybki dostęp JIT dla metod, które zawierają pętle. Aby uzyskać więcej informacji, zobacz Szybki dostęp JIT dla pętli.
Właściwość TieredPGO określa, czy jest włączona optymalizacja dynamiczna lub oparta na profilu warstwowym (PGO). Ustaw wartość na wartość w celu true włączenia warstwowego PGO. Aby uzyskać więcej informacji, zobacz Optymalizacja sterowana profilem.
Właściwość UseWindowsThreadPool określa, czy zarządzanie wątkami puli wątków jest delegowane do puli wątków systemu Windows (tylko system Windows). Wartość domyślna to false, w którym przypadku jest używana pula wątków platformy .NET. Aby uzyskać więcej informacji, zobacz Pula wątków systemu Windows.
Właściwość AssetTargetFallback umożliwia określenie dodatkowych zgodnych wersji platformy dla odwołań do projektu i pakietów NuGet. Jeśli na przykład określisz zależność pakietu przy użyciu polecenia PackageReference , ale ten pakiet nie zawiera zasobów zgodnych z projektami TargetFramework, AssetTargetFallback właściwość zostanie w pełni uwzględniona. Zgodność przywoływanego pakietu jest ponownie zaznaczona przy użyciu każdej platformy docelowej określonej w elemencie AssetTargetFallback. Ta właściwość zastępuje przestarzałą właściwość PackageTargetFallback.
Właściwość można ustawić AssetTargetFallback na co najmniej jedną wersję platformy docelowej.
Właściwość DisableImplicitFrameworkReferences kontroluje niejawne FrameworkReference elementy w przypadku określania wartości docelowej dla platformy .NET Core 3.0 i nowszych wersji. W przypadku określania wartości docelowej dla platformy .NET Core 2.1 lub .NET Standard 2.0 i starszych wersji kontroluje niejawne elementy PackageReference do pakietów w metapakiecie. (Metapakiet to pakiet oparty na strukturze, który składa się tylko z zależności od innych pakietów). Ta właściwość kontroluje również niejawne odwołania, takie jak System i System.Core podczas określania wartości docelowej dla programu .NET Framework.
Ustaw tę właściwość na wartość , aby true wyłączyć niejawne elementy FrameworkReference lub PackageReference. Jeśli ustawisz tę właściwość na true, możesz dodać jawne odwołania tylko do potrzebnych struktur lub pakietów.
Ustaw właściwość , aby DisableTransitiveFrameworkReferenceDownloads uniknąć pobierania true dodatkowych pakietów środowiska uruchomieniowego i pakietów docelowych, do których nie odwołuje się bezpośrednio projekt.
Właściwość DisableTransitiveProjectReferences kontroluje niejawne odwołania do projektu. Ustaw tę właściwość na wartość , aby true wyłączyć niejawne ProjectReference elementy. Wyłączenie niejawnych odwołań do projektu powoduje niezamieszające zachowanie podobne do starszego systemu projektu.
Gdy ta właściwość ma truewartość , ma podobny wpływ na ustawienie PrivateAssets="All" dla wszystkich zależności projektu zależnego.
Jeśli ustawisz tę właściwość na truewartość , możesz dodać jawne odwołania do tylko potrzebnych projektów.
Właściwość została wprowadzona ManagePackageVersionsCentrally na platformie .NET 7. Ustawiając go true w pliku Directory.Packages.props w katalogu głównym repozytorium, można zarządzać typowymi zależnościami w projektach z jednej lokalizacji. Dodaj wersje dla typowych zależności pakietów przy użyciu PackageVersion elementów w pliku Directory.Packages.props . Następnie w pojedynczych plikach projektu można pominąć Version atrybuty z dowolnych PackageReference elementów odwołujących się do centralnie zarządzanych pakietów.
Przywrócenie odwołanego pakietu instaluje wszystkie jego bezpośrednie zależności i wszystkie zależności tych zależności. Przywracanie pakietu można dostosować, określając właściwości, takie jak RestorePackagesPath i RestoreIgnoreFailedSources. Aby uzyskać więcej informacji na temat tych i innych właściwości, zobacz przywracanie obiektu docelowego.
UseMauiEssentials Ustaw właściwość na , aby true zadeklarować jawne odwołanie do projektu lub pakietu, który zależy od maUI Essentials. To ustawienie zapewnia, że projekt jest ściągany we właściwej znanej dokumentacji platformy dla programu MAUI Essentials. Jeśli projekt odwołuje się do projektu korzystającego z programu MAUI Essentials, ale nie ustawisz tej właściwości na true, może wystąpić ostrzeżenie kompilacji NETSDK1186.
Właściwość ValidateExecutableReferencesMatchSelfContained może służyć do wyłączania błędów związanych z odwołaniami do projektu wykonywalnego. Jeśli platforma .NET wykryje, że samodzielny projekt wykonywalny odwołuje się do projektu wykonywalnego zależnego od platformy lub odwrotnie, generuje błędy odpowiednio NETSDK1150 i NETSDK1151. Aby uniknąć tych błędów, gdy odwołanie jest zamierzone, ustaw ValidateExecutableReferencesMatchSelfContained właściwość na false.
Za WindowsSdkPackageVersion pomocą właściwości można zastąpić wersję pakietu określania wartości docelowej zestawu Windows SDK. Ta właściwość została wprowadzona na platformie .NET 5 i zastępuje w tym celu użycie FrameworkReference elementu.
Nie zalecamy zastępowania wersji zestawu Windows SDK, ponieważ pakiety przeznaczone dla zestawu SDK systemu Windows są dołączone do zestawu .NET 5+ SDK. Zamiast tego, aby odwołać się do najnowszego pakietu zestawu Windows SDK, zaktualizuj swoją wersję zestawu .NET SDK. Ta właściwość powinna być używana tylko w rzadkich przypadkach, takich jak używanie pakietów w wersji zapoznawczej lub konieczność zastąpienia wersji C#/WinRT.
Właściwości związane z uruchamianiem
Następujące właściwości są używane do uruchamiania aplikacji za dotnet run pomocą polecenia :
Możesz określić dodatkowe argumenty, które mają zostać przekazane do aplikacji, używając -- opcji .dotnet run
RunWorkingDirectory
Właściwość RunWorkingDirectory definiuje katalog roboczy, w ramach których ma zostać uruchomiony proces aplikacji. Może to być ścieżka bezwzględna lub ścieżka względna względem katalogu projektu. Jeśli nie określisz katalogu, OutDir zostanie użyty jako katalog roboczy.
Wprowadzona na platformie .NET 9 właściwość może służyć do konfigurowania SdkAnalysisLevelścisłego stosowania narzędzi zestawu SDK. Ułatwia zarządzanie poziomami ostrzeżeń zestawu SDK w sytuacjach, w których może nie być możliwe przypięcie zestawów SDK za pośrednictwem global.json lub innych środków. Za pomocą tej właściwości można poinformować nowszy zestaw SDK, aby zachowywał się tak, jakby był starszym zestawem SDK w odniesieniu do określonego narzędzia lub funkcji bez konieczności instalowania starszego zestawu SDK.
Dozwolone wartości tej właściwości to pasma funkcji zestawu SDK, na przykład 8.0.100 i 8.0.400. Wartość domyślna dla przedziału funkcji zestawu SDK uruchomionego zestawu SDK. Na przykład w przypadku zestawu SDK 9.0.102 wartość będzie wynosić 9.0.100. (Aby uzyskać informacje na temat sposobu przechowywania wersji zestawu .NET SDK, zobacz Jak jest wersjonowana platforma .NET).
Właściwość IsTestProject oznacza, że projekt jest projektem testowym. Gdy ta właściwość jest ustawiona na truewartość , sprawdzanie poprawności w celu sprawdzenia, czy projekt odwołuje się do samodzielnego pliku wykonywalnego jest wyłączony. Wynika to z faktu, że projekty testowe mają element OutputType , Exe ale zwykle wywołuje interfejsy API w odwołanym pliku wykonywalnym, a nie próbujesz uruchomić. Ponadto jeśli projekt odwołuje się do projektu, w którym IsTestProject ustawiono wartość true, projekt testowy nie jest weryfikowany jako odwołanie do pliku wykonywalnego.
Ta właściwość jest wymagana głównie w scenariuszu dotnet test i nie ma wpływu na korzystanie z vstest.console.exe.
Uwaga
Jeśli projekt określa zestaw MSTest SDK, nie musisz ustawiać tej właściwości. Jest ona ustawiana automatycznie. Podobnie ta właściwość jest ustawiana automatycznie dla projektów odwołujących się do pakietu NuGet Microsoft.NET.Test.Sdk połączonego z narzędziem VSTest.
IsTestingPlatformApplication
Gdy projekt odwołuje się do pakietu Microsoft.Testing.Platform.MSBuild , ustawienie IsTestingPlatformApplication na true wartość (która jest również wartością domyślną, jeśli nie zostanie określona), wykonuje następujące czynności:
Generuje punkt wejścia do projektu testowego.
Generuje plik konfiguracji.
Wykrywa rozszerzenia.
Ustawienie właściwości w celu false wyłączenia zależności przechodniej z pakietem. Zależność przechodnia polega na tym, że projekt odwołujący się do innego projektu, który odwołuje się do danego pakietu, zachowuje się tak, jakby odwołuje się do pakietu. Zazwyczaj tę właściwość należy ustawić na false w projekcie nietestowym, który odwołuje się do projektu testowego. Aby uzyskać więcej informacji, zobacz błąd CS8892.
Jeśli projekt testowy odwołuje się do msTest, NUnit lub xUnit, ta właściwość jest ustawiona na taką samą wartość jak EnableMSTestRunner, EnableNUnitRunner lub UseMicrosoftTestingPlatformRunner (dla xUnit).
Enable[NugetPackageNameWithoutDots]
Użyj właściwości ze wzorcem Enable[NugetPackageNameWithoutDots] , aby włączyć lub wyłączyć rozszerzenia Microsoft.Testing.Platform.
Korzystając z zestawu SDK projektu MSTest, możesz użyć EnableAspireTesting właściwości , aby wprowadzić wszystkie zależności i dyrektywy domyślne using potrzebne do testowania za pomocą Aspire narzędzi i MSTest. Ta właściwość jest dostępna w programie MSTest 3.4 i nowszych wersjach.
Korzystając z zestawu SDK projektu MSTest, możesz użyć EnablePlaywright właściwości , aby wprowadzić wszystkie zależności i dyrektywy domyślne using potrzebne do testowania za pomocą Playwright narzędzi i MSTest. Ta właściwość jest dostępna w programie MSTest 3.4 i nowszych wersjach.
Właściwość EnableMSTestRunner włącza lub wyłącza korzystanie z modułu uruchamiającego MSTest. Moduł uruchamiający MSTest to uproszczona i przenośna alternatywa dla programu VSTest. Ta właściwość jest dostępna w msTest 3.2 i nowszych wersjach.
Uwaga
Jeśli projekt określa zestaw MSTest SDK, nie musisz ustawiać tej właściwości. Jest ona ustawiana automatycznie.
EnableNUnitRunner
Właściwość EnableNUnitRunner włącza lub wyłącza korzystanie z modułu uruchamiającego NUnit. Moduł uruchamiający NUnit jest lekką i przenośną alternatywą dla programu VSTest. Ta właściwość jest dostępna w NUnit3TestAdapter w wersji 5.0 lub nowszej.
GenerateTestingPlatformEntryPoint
Ustawienie właściwości GenerateTestingPlatformEntryPoint na false wyłącza automatyczne generowanie punktu wejścia programu w projekcie testowym MSTest lub NUnit. Możesz ustawić tę właściwość na false wartość podczas ręcznego definiowania punktu wejścia lub w przypadku odwołowania się do projektu testowego z pliku wykonywalnego, który ma również punkt wejścia.
Aby uzyskać więcej informacji, zobacz błąd CS8892.
Aby kontrolować generowanie punktu wejścia w projekcie VSTest, użyj GenerateProgramFile właściwości .
TestingPlatformCaptureOutput
Właściwość TestingPlatformCaptureOutput określa, czy wszystkie dane wyjściowe konsoli są przechwytywane i ukryte przed użytkownikiem podczas dotnet test uruchamiania Microsoft.Testing.Platform testów. Domyślnie dane wyjściowe konsoli są ukryte. Te dane wyjściowe obejmują baner, informacje o wersji i sformatowane informacje o teście. Ustaw tę właściwość, aby wyświetlić false te informacje razem z danymi wyjściowymi programu MSBuild.
Właściwość TestingPlatformCaptureOutput umożliwia określenie argumentów wiersza polecenia dla aplikacji testowej podczas uruchamiania dotnet testMicrosoft.Testing.Platform testów. Poniższy fragment kodu pliku projektu przedstawia przykład.
Właściwość TestingPlatformDotnetTestSupport umożliwia określenie, czy program VSTest jest używany podczas uruchamiania dotnet test testów. Jeśli ustawisz tę właściwość na truewartość , program VSTest jest wyłączony i wszystkie Microsoft.Testing.Platform testy są uruchamiane bezpośrednio.
Jeśli masz rozwiązanie, które zawiera projekty testowe VSTest, a także projekty MSTest, NUnit lub XUnit, należy wykonać jedno wywołanie na tryb (czyli dotnet test nie będzie uruchamiać testów zarówno z programu VSTest, jak i nowszych platform w jednym wywołaniu).
TestingPlatformShowTestsFailure
Właściwość TestingPlatformShowTestsFailure umożliwia kontrolowanie, czy podczas uruchamiania testów zgłaszany jest dotnet test pojedynczy błąd, czy wszystkie błędy w teście, które zakończyły się niepowodzeniem. Domyślnie błędy testów są sumowane w pliku .log , a pojedynczy błąd na projekt testowy jest zgłaszany w programie MSBuild. Aby wyświetlić błędy dla testu, ustaw tę właściwość na true wartość w pliku projektu.
TestingExtensionsProfile
W przypadku korzystania z zestawu SDKTestingExtensionsProfile projektu MSTest właściwość umożliwia wybranie profilu do użycia. W poniższej tabeli przedstawiono dozwolone wartości.
Wartość
Opis
Default
Włącza zalecane rozszerzenia dla tej wersji zestawu MSTest.SDK.
None
Nie włączono rozszerzeń.
AllMicrosoft
Włącz wszystkie rozszerzenia dostarczane przez firmę Microsoft (w tym rozszerzenia z restrykcyjną licencją).
Aby uzyskać więcej informacji, zobacz Profil modułu uruchamiającego testy MSTest.
UseVSTest
UseVSTest Ustaw właściwość na , aby true przełączyć się z modułu uruchamiającego MSTest na moduł uruchamiający testy VS podczas korzystania z zestawu SDK projektu MSTest.
MSTestAnalysisMode
Ta właściwość decyduje, które analizatory są włączone w danej ważności. Aby uzyskać więcej informacji, zobacz analizy kodu MSTest.
Właściwości związane z hostingem
Następujące właściwości programu MSBuild są udokumentowane w tej sekcji:
Właściwość AppHostDotNetSearch konfiguruje sposób tworzenia natywnego pliku wykonywalnego dla aplikacji w celu wyszukania instalacji platformy .NET. Ta właściwość ma wpływ tylko na plik wykonywalny utworzony podczas publikowania, a nie kompilacji.
Ta właściwość została wprowadzona na platformie .NET 9.
AppHostRelativeDotNet
Właściwość AppHostRelativeDotNet umożliwia określenie ścieżki względnej pliku wykonywalnego aplikacji w celu wyszukania instalacji platformy .NET, gdy jest ona skonfigurowana do tego celu.
AppHostRelativeDotNet Ustawienie właściwości oznacza, że AppHostDotNetSearch to AppRelative. Ta właściwość ma wpływ tylko na plik wykonywalny utworzony podczas publikowania, a nie kompilacji.
Ta właściwość została wprowadzona na platformie .NET 9.
EnableComHosting
Właściwość EnableComHosting wskazuje, że zestaw zapewnia serwer COM. Ustawienie wartości na EnableComHostingtrue wartość oznacza również, że parametr EnableDynamicLoading to true.
Właściwość EnableDynamicLoading wskazuje, że zestaw jest składnikiem ładowanym dynamicznie. Składnik może być biblioteką COM lub biblioteką inną niż COM, która może być używana z hosta natywnego lub używana jako wtyczka. Ustawienie tej właściwości na true wartość ma następujące efekty:
Właściwość DisableImplicitNamespaceImports może służyć do wyłączania niejawnych importów przestrzeni nazw w projektach Visual Basic przeznaczonych dla platformy .NET 6 lub nowszej. Niejawne przestrzenie nazw to domyślne przestrzenie nazw importowane globalnie w projekcie Visual Basic. Ustaw tę właściwość na wartość , aby true wyłączyć niejawne importy przestrzeni nazw.
Właściwość ImplicitUsings może służyć do włączania i wyłączania niejawnych global using dyrektyw w projektach języka C#, które są przeznaczone dla platformy .NET 6 lub nowszej wersji oraz języka C# 10 lub nowszej. Po włączeniu tej funkcji zestaw SDK platformy .NET dodaje global using dyrektywy dla zestawu domyślnych przestrzeni nazw na podstawie typu zestawu SDK projektu. Ustaw tę właściwość na true lub enable , aby włączyć niejawne global using dyrektywy. Aby wyłączyć niejawne global using dyrektywy, usuń właściwość lub ustaw ją na false lub disable.
Szablony dla nowych projektów języka C#, które są przeznaczone dla platformy .NET 6 lub nowszej, mają ImplicitUsings ustawioną enable wartość domyślną.
Elementy programu MSBuild są danymi wejściowymi w systemie kompilacji. Elementy są określane zgodnie z ich typem, czyli nazwą elementu. Na przykład Compile i Reference są dwoma typowymi typami elementów. Następujące dodatkowe typy elementów są udostępniane przez zestaw SDK platformy .NET:
Można użyć dowolnych atrybutów elementu standardowego Użyj polecenia Include , aby dodać nowy element i użyć Update polecenia , aby zmodyfikować istniejący element. Na przykład Update często służy do modyfikowania elementu, który został niejawnie dodany przez zestaw SDK platformy .NET.
AssemblyMetadata
Element AssemblyMetadata określa atrybut zestawu pary AssemblyMetadataAttribute klucz-wartość. Metadane Include stają się kluczem, a Value metadane stają się wartością.
Jeśli zestaw znajomy jest podpisany, możesz określić opcjonalne Key metadane, aby określić jego pełny klucz publiczny. Jeśli nie określisz Key metadanych i $(PublicKey) jest dostępny, używany jest ten klucz. W przeciwnym razie do atrybutu nie zostanie dodany żaden klucz publiczny.
FrameworkReference
Element FrameworkReference definiuje odwołanie do platformy udostępnionej .NET.
Atrybut Include określa identyfikator struktury.
Fragment pliku projektu w poniższym przykładzie odwołuje się do platformy udostępnionej Microsoft.AspNetCore.App.
Element PackageReference definiuje odwołanie do pakietu NuGet.
Atrybut Include określa identyfikator pakietu. Atrybut Version określa wersję lub zakres wersji. Aby uzyskać informacje na temat określania minimalnej wersji, maksymalnej wersji, zakresu lub dokładnego dopasowania, zobacz Zakresy wersji.
Fragment pliku projektu w poniższym przykładzie odwołuje się do pakietu System.Runtime .
Element TrimmerRootAssembly umożliwia wykluczenie zestawu z przycinania. Przycinanie to proces usuwania nieużywanych części środowiska uruchomieniowego z spakowanej aplikacji. W niektórych przypadkach przycinanie może niepoprawnie usunąć wymagane odwołania.
Poniższy kod XML wyklucza System.Security zestaw z przycinania.
Element Using umożliwia globalne uwzględnienie przestrzeni nazw w projekcie języka C#, tak aby nie trzeba było dodawać using dyrektywy dla przestrzeni nazw w górnej części plików źródłowych. Ten element jest podobny do Import elementu, który może być używany w tym samym celu w projektach Visual Basic. Ta właściwość jest dostępna od platformy .NET 6.
Metadane CopyToPublishDirectory elementu MSBuild steruje, gdy element jest kopiowany do katalogu publikowania. W poniższej tabeli przedstawiono dozwolone wartości.
Wartość
Opis
PreserveNewest
Kopiuje element tylko wtedy, gdy uległ zmianie w lokalizacji źródłowej.
IfDifferent
Kopiuje element tylko wtedy, gdy został zmieniony w lokalizacji źródłowej lub docelowej. To ustawienie jest przydatne w sytuacjach, w których należy zresetować zmiany występujące po opublikowaniu.
Always
Zawsze kopiuje element.
Never
Nigdy nie kopiuje elementu.
Z punktu widzenia wydajności zaleca się, PreserveNewest ponieważ umożliwia kompilację przyrostową. Unikaj używania Always i używaj IfDifferent zamiast tego, co pozwala uniknąć operacji we/wy zapisu bez żadnego efektu.
W przypadku elementu spoza katalogu projektu i jego podkatalogów element docelowy publikowania używa metadanych Link elementu, aby określić, gdzie skopiować element.
LinkOkreśla również sposób wyświetlania elementów spoza drzewa projektu w oknie Eksplorator rozwiązań programu Visual Studio.
Jeśli Link nie określono elementu spoza stożka projektu, wartość domyślna to %(LinkBase)\%(RecursiveDir)%(Filename)%(Extension).
LinkBase umożliwia określenie rozsądnego folderu podstawowego dla elementów spoza stożka projektu. Hierarchia folderów w folderze podstawowym jest zachowywana za pomocą polecenia RecursiveDir. Jeśli LinkBase nie zostanie określony, zostanie pominięty ze ścieżki Link .
Na poniższej ilustracji przedstawiono sposób wyświetlania pliku dołączonego za pośrednictwem poprzedniego elementu Include glob w Eksplorator rozwiązań.
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię:
Dołącz do serii meetup, aby tworzyć skalowalne rozwiązania sztucznej inteligencji oparte na rzeczywistych przypadkach użycia z innymi deweloperami i ekspertami.