Dokumentacja programu MSBuild dla projektów zestawu .NET SDK
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:
Uwaga
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:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- NoWarn
- RoslynAssembliesPath
ApiCompatStrictMode
Po ustawieniu true
ApiCompatStrictMode
wartości właściwość określa, że kontrole zgodności interfejsu API powinny być wykonywane w trybie ścisłym.
<PropertyGroup>
<ApiCompatStrictMode>true</ApiCompatStrictMode>
</PropertyGroup>
ApiCompatValidateAssemblies
Właściwość ApiCompatValidateAssemblies
umożliwia serię weryfikacji określonych zestawów. Aby uzyskać więcej informacji, zobacz Walidacja zestawu.
<PropertyGroup>
<ApiCompatValidateAssemblies>true</ApiCompatValidateAssemblies>
</PropertyGroup>
Właściwości struktury
Następujące właściwości programu MSBuild są udokumentowane w tej sekcji:
TargetFramework
Właściwość TargetFramework
określa docelową wersję platformy dla aplikacji. Aby uzyskać listę prawidłowych szablonów platform docelowych, zobacz Target frameworks in SDK-style projects (Platformy docelowe w projektach w stylu zestawu SDK).
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
Aby uzyskać więcej informacji, zobacz Platformy docelowe w projektach w stylu zestawu SDK.
TargetFrameworks
TargetFrameworks
Użyj właściwości , jeśli aplikacja ma być docelowa dla wielu platform. Aby uzyskać listę prawidłowych szablonów platform docelowych, zobacz Target frameworks in SDK-style projects (Platformy docelowe w projektach w stylu zestawu SDK).
Uwaga
Ta właściwość jest ignorowana, jeśli TargetFramework
określono wartość (pojedynczą).
<PropertyGroup>
<TargetFrameworks>net8.0;net462</TargetFrameworks>
</PropertyGroup>
Aby uzyskać więcej informacji, zobacz Platformy docelowe w projektach w stylu zestawu SDK.
NetStandardImplicitPackageVersion
Uwaga
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
.
<PropertyGroup>
<TargetFramework>netstandard1.3</TargetFramework>
<NetStandardImplicitPackageVersion>1.6.0</NetStandardImplicitPackageVersion>
</PropertyGroup>
Właściwości atrybutu zestawu
GenerateAssemblyInfo
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:
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
Ustawienie GeneratedAssemblyInfoFile steruje nazwą wygenerowanego 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).
<PropertyGroup>
<GeneratedAssemblyInfoFile>assemblyinfo.cs</GeneratedAssemblyInfoFile>
</PropertyGroup>
Właściwości pakietu
Właściwości opisowe
Możesz określić właściwości, takie jak PackageId
, , PackageIcon
PackageVersion
, Title
iDescription
, 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).
<PropertyGroup>
...
<PackageId>ClassLibDotNetStandard</PackageId>
<Version>1.0.0</Version>
<Authors>John Doe</Authors>
<Company>Contoso</Company>
</PropertyGroup>
PackRelease
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.
<PropertyGroup>
<PackRelease>true</PackRelease>
</PropertyGroup>
Uwaga
- Począwszy od zestawu .NET 8 SDK,
PackRelease
wartość domyślna totrue
. 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
natrue
(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:
- ApiCompatEnableRuleAttributesMustMatch
- ApiCompatEnableRuleCannotChangeParameterName
- ApiCompatExcludeAttributesFile
- ApiCompatGenerateSuppressionFile
- ApiCompatPermitUnnecessarySuppressions
- ApiCompatPreserveUnnecessarySuppressions
- ApiCompatRespectInternals
- ApiCompatSuppressionFile
- ApiCompatSuppressionOutputFile
- EnablePackageValidation
- EnableStrictModeForBaselineValidation
- EnableStrictModeForCompatibleFrameworksInPackage
- EnableStrictModeForCompatibleTfms
- NoWarn
- PackageValidationBaselineFrameworkToIgnore
- PackageValidationBaselineName
- PackageValidationBaselineVersion
- PackageValidationReferencePath
- RoslynAssembliesPath
ApiCompatEnableRuleAttributesMustMatch
Po ustawieniu true
ApiCompatEnableRuleAttributesMustMatch
wartości właściwość włącza regułę sprawdzania poprawności, która sprawdza, czy atrybuty są zgodne. Wartość domyślna to false
.
<PropertyGroup>
<ApiCompatEnableRuleAttributesMustMatch>true</ApiCompatEnableRuleAttributesMustMatch>
</PropertyGroup>
ApiCompatEnableRuleCannotChangeParameterName
Po ustawieniu true
ApiCompatEnableRuleCannotChangeParameterName
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
.
<PropertyGroup>
<ApiCompatEnableRuleCannotChangeParameterName>true</ApiCompatEnableRuleCannotChangeParameterName>
</PropertyGroup>
ApiCompatExcludeAttributesFile
Element ApiCompatExcludeAttributesFile
określa ścieżkę do pliku zawierającego atrybuty do wykluczenia w formacie DocId .
<ItemGroup>
<ApiCompatExcludeAttributesFile Include="ApiCompatExcludedAttributes.txt" />
<ApiCompatExcludeAttributesFile Include="ApiCompatBaselineExcludedAttributes.txt" />
</ItemGroup>
ApiCompatGenerateSuppressionFile
Właściwość ApiCompatGenerateSuppressionFile
określa, czy należy wygenerować plik pomijania zgodności.
<PropertyGroup>
<ApiCompatGenerateSuppressionFile>true</ApiCompatGenerateSuppressionFile>
</PropertyGroup>
ApiCompatPermitUnnecessarySuppressions
Właściwość ApiCompatPermitUnnecessarySuppressions
określa, czy zezwalać na niepotrzebne pomijania w pliku pomijania.
Wartość domyślna to false
.
<PropertyGroup>
<ApiCompatPermitUnnecessarySuppressions>true</ApiCompatPermitUnnecessarySuppressions>
</PropertyGroup>
ApiCompatPreserveUnnecessarySuppressions
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 true
wartość .
Wartość domyślna to false
.
<PropertyGroup>
<ApiCompatPreserveUnnecessarySuppressions>true</ApiCompatPreserveUnnecessarySuppressions>
</PropertyGroup>
ApiCompatRespectInternals
Właściwość ApiCompatRespectInternals
określa, czy internal
interfejsy API powinny być sprawdzane pod kątem zgodności oprócz public
interfejsów API.
<PropertyGroup>
<ApiCompatRespectInternals>true</ApiCompatRespectInternals>
</PropertyGroup>
ApiCompatSuppressionFile
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).
<ItemGroup>
<ApiCompatSuppressionFile Include="CompatibilitySuppressions.xml;CompatibilitySuppressions.WasmThreads.xml" />
</ItemGroup>
ApiCompatSuppressionOutputFile
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.
<PropertyGroup>
<EnablePackageValidation>true</EnablePackageValidation>
</PropertyGroup>
EnableStrictModeForBaselineValidation
Gdy jest ustawiona true
EnableStrictModeForBaselineValidation
wartość , właściwość włącza tryb ścisły dla kontroli punktu odniesienia pakietu. Wartość domyślna to false
.
EnableStrictModeForCompatibleFrameworksInPackage
Gdy jest ustawiona true
EnableStrictModeForCompatibleFrameworksInPackage
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 true
EnableStrictModeForCompatibleTfms
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.
<PropertyGroup>
<NoWarn>$(NoWarn);PKV0001</NoWarn>
</PropertyGroup>
PackageValidationBaselineFrameworkToIgnore
Element PackageValidationBaselineFrameworkToIgnore
określa platformę docelową do ignorowania z pakietu bazowego. Ciąg struktury musi dokładnie odpowiadać nazwie folderu w pakiecie odniesienia.
<ItemGroup>
<PackageValidationBaselineFrameworkToIgnore Include="netcoreapp2.1" />
</ItemGroup>
PackageValidationBaselineName
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.
<ItemGroup>
<PackageValidationReferencePath Include="path/to/reference-assembly" TargetFramework="net7.0" />
</ItemGroup>
RoslynAssembliesPath
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:
- AppendRuntimeIdentifierToOutputPath
- AppendTargetFrameworkToOutputPath
- CopyLocalLockFileAssemblies
- ErrorOnDuplicatePublishOutputFiles
- GenerateRuntimeConfigDevFile
- GenerateRuntimeConfigurationFiles
- GenerateSatelliteAssembliesForCore
- IsPublishable
- PreserveCompilationContext
- PreserveCompilationReferences
- ProduceReferenceAssemblyInOutDir
- PublishDocumentationFile
- PublishDocumentationFiles
- PublishReferencesDocumentationFiles
- Publikowanie wersji
- PublikowanieselfContained
- RollForward
- RuntimeFrameworkVersion
- RuntimeIdentifier
- RuntimeIdentifiers
- SatelliteResourceLanguages
- SelfContained
- UseAppHost
AppendTargetFrameworkToOutputPath
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:
<PropertyGroup>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
AppendRuntimeIdentifierToOutputPath
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-x64
następujące ustawienie zmienia ścieżkę wyjściową z bin\Debug\net5.0\win-x64
na bin\Debug\net5.0
:
<PropertyGroup>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
</PropertyGroup>
CopyLocalLockFileAssemblies
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 true
wartość , 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.
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
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ą.
Napiwek
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.
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
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
.
<PropertyGroup>
<GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>
</PropertyGroup>
GenerateRuntimeConfigurationFiles
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 Exe
wartość , ta właściwość jest domyślnie ustawiona na true
.
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
GenerateSatelliteAssembliesForCore
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:
- Chcesz użyć opcji kompilatora
deterministic
języka C#. - Ogranicza Cię fakt, że al.exe nie ma poparcia dla podpisywania publicznego i radzi sobie AssemblyInformationalVersionAttribute źle.
<PropertyGroup>
<GenerateSatelliteAssembliesForCore>true</GenerateSatelliteAssembliesForCore>
</PropertyGroup>
IsPublishable
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.
<PropertyGroup>
<IsPublishable>false</IsPublishable>
</PropertyGroup>
PreserveCompilationContext
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.
<PropertyGroup>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
PreserveCompilationReferences
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 .
<PropertyGroup>
<PreserveCompilationReferences>true</PreserveCompilationReferences>
</PropertyGroup>
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.
<PropertyGroup>
<ProduceReferenceAssemblyInOutDir>true</ProduceReferenceAssemblyInOutDir>
</PropertyGroup>
Aby uzyskać więcej informacji, zobacz Zapisywanie zestawów odwołań do danych wyjściowych pośrednich.
PublishDocumentationFile
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
.
Napiwek
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.
<PropertyGroup>
<PublishRelease>true</PublishRelease>
</PropertyGroup>
Uwaga
- Począwszy od zestawu .NET 8 SDK,
PublishRelease
wartość domyślna to dla projektów przeznaczonych dla platformytrue
.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:Publish
programu 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
natrue
(lub dowolną inną wartość). Podczas publikowania rozwiązania z włączoną tą zmienną wartość projektuPublishRelease
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ściamiPublishRelease
, 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-contained
polecenia 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
.
<PropertyGroup>
<PublishSelfContained>true</PublishSelfContained>
</PropertyGroup>
RollForward
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.
<PropertyGroup>
<RollForward>LatestMinor</RollForward>
</PropertyGroup>
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. |
Aby uzyskać więcej informacji, zobacz Sterowanie zachowaniem wycofywania.
RuntimeFrameworkVersion
Właściwość RuntimeFrameworkVersion
określa wersję środowiska uruchomieniowego do użycia podczas publikowania. Określ wersję środowiska uruchomieniowego:
<PropertyGroup>
<RuntimeFrameworkVersion>5.0.7</RuntimeFrameworkVersion>
</PropertyGroup>
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ę.
RuntimeIdentifier
Właściwość RuntimeIdentifier
umożliwia określenie pojedynczego identyfikatora środowiska uruchomieniowego (RID) dla projektu. Identyfikator RID umożliwia publikowanie samodzielnego wdrożenia.
<PropertyGroup>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
</PropertyGroup>
RuntimeIdentifiers
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.
Napiwek
RuntimeIdentifier
(pojedyncza) może zapewnić szybsze kompilacje, gdy wymagane jest tylko jedno środowisko uruchomieniowe.
<PropertyGroup>
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>
SatelliteResourceLanguages
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).
<PropertyGroup>
<SatelliteResourceLanguages>en-US;de-DE</SatelliteResourceLanguages>
</PropertyGroup>
Uwaga
Tę właściwość należy określić w projekcie, który odwołuje się do pakietu NuGet z zlokalizowanymi zestawami satelickich zasobów.
Aby określić wiele języków jako argument do
dotnet publish
elementu , należy dodać trzy pary cudzysłowów wokół identyfikatorów języka. Na przykład:dotnet msbuild multi.msbuildproj -p:SatelliteResourceLanguages="""de;en"""
SelfContained
Właściwość SelfContained
informuje i dotnet publish
kompiluje dotnet build
lub publikuje aplikację jako samodzielną aplikację. Ta właściwość jest przydatna, gdy nie można użyć argumentu --self-contained
z 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.
<PropertyGroup>
<SelfContained>true</SelfContained>
</PropertyGroup>
UseAppHost
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.
<PropertyGroup>
<UseAppHost>false</UseAppHost>
</PropertyGroup>
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:
- ContinuousIntegrationBuild
- CopyDebugSymbolFilesFromPackages
- CopyDocumentationFilesFromPackages
- DisableImplicitFrameworkDefines
- DocumentationFile
- EmbeddedResourceUseDependentUponConvention
- EnablePreviewFeatures
- WłączWindowsTargeting
- GenerateDocumentationFile
- GenerateRequiresPreviewFeaturesAttribute
- OptimizeImplicitlyTriggeredBuild
- DisableRuntimeMarshalling
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 true
wartość 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 <SourceRoot Include="$(MyDirectory)" />
pakietu dostawcy SourceLink 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
:
<PropertyGroup Condition="'$(TF_BUILD)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
W przypadku funkcji GitHub Actions nazwa zmiennej to GITHUB_ACTIONS
:
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
</PropertyGroup>
CopyDebugSymbolFilesFromPackages
Gdy ta właściwość jest ustawiona na true
wartość , 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 true
wartość , 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.0
oznacza 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.
<PropertyGroup>
<DocumentationFile>path/to/file.xml</DocumentationFile>
</PropertyGroup>
EmbeddedResourceUseDependentUponConvention
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 true
wartość , 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 LogicalName
dla EmbeddedResource
elementu określono , lub DependentUpon
metadane, wygenerowana nazwa pliku manifestu dla tego pliku zasobu jest oparta na ManifestResourceName
tych 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 true
wartość . Jeśli ustawiono wartość false
, a dla elementu w pliku projektu nie LogicalName
określono EmbeddedResource
żadnych metadanych , ManifestResourceName
DependentUpon
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).
<PropertyGroup>
<EmbeddedResourceUseDependentUponConvention>true</EmbeddedResourceUseDependentUponConvention>
</PropertyGroup>
EnablePreviewFeatures
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 True
wartość .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
</PropertyGroup>
Gdy projekt zawiera tę właściwość ustawioną na True
wartość , do pliku AssemblyInfo.cs zostanie dodany następujący atrybut na poziomie zestawu:
[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 true
wartość , 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.
<PropertyGroup>
<EnableWindowsTargeting>true</EnableWindowsTargeting>
</PropertyGroup>
GenerateDocumentationFile
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 ).
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
Aby uzyskać więcej informacji na temat generowania dokumentacji z komentarzy kodu, zobacz Komentarze dokumentacji XML (C#), Dokumentowanie kodu przy użyciu języka XML (Visual Basic) lub Dokumentowanie kodu przy użyciu języka XML (F#).
GenerateRequiresPreviewFeaturesAttribute
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 False
wartość .
<PropertyGroup>
<EnablePreviewFeatures>True</EnablePreviewFeatures>
<GenerateRequiresPreviewFeaturesAttribute>False</GenerateRequiresPreviewFeaturesAttribute>
</PropertyGroup>
Ważne
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 true
jest . Jeśli ustawiono TreatWarningsAsErrors
wartość , true
ale nadal chcesz, aby kompilacje wyzwalane niejawnie zostały zoptymalizowane, możesz ustawić wartość OptimizeImplicitlyTriggeredBuild
True
. Aby wyłączyć optymalizację kompilacji dla niejawnie wyzwalanych kompilacji, ustaw wartość OptimizeImplicitlyTriggeredBuild
False
.
<PropertyGroup>
<OptimizeImplicitlyTriggeredBuild>True</OptimizeImplicitlyTriggeredBuild>
</PropertyGroup>
DisableRuntimeMarshalling
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 true
wartość , 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.
<PropertyGroup>
<DisableRuntimeMarshalling>True</DisableRuntimeMarshalling>
</PropertyGroup>
Domyślne właściwości dołączania elementów
Następujące właściwości programu MSBuild są udokumentowane w tej sekcji:
- DefaultItemExcludesInProjectFolder
- DefaultItemExcludes
- EnableDefaultCompileItems
- EnableDefaultEmbeddedResourceItems
- EnableDefaultItems
- EnableDefaultNoneItems
Aby uzyskać więcej informacji, zobacz Domyślne dołączanie i wykluczanie.
DefaultItemExcludes
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.
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/*.myextension</DefaultItemExcludes>
</PropertyGroup>
DefaultItemExcludesInProjectFolder
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 .
<PropertyGroup>
<DefaultItemExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/myprefix*/**</DefaultItemExcludesInProjectFolder>
</PropertyGroup>
EnableDefaultItems
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.
<PropertyGroup>
<EnableDefaultItems>false</EnableDefaultItems>
</PropertyGroup>
EnableDefaultCompileItems
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.
<PropertyGroup>
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
</PropertyGroup>
EnableDefaultEmbeddedResourceItems
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.
<PropertyGroup>
<EnableDefaultEmbeddedResourceItems>false</EnableDefaultEmbeddedResourceItems>
</PropertyGroup>
EnableDefaultNoneItems
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.
<PropertyGroup>
<EnableDefaultNoneItems>false</EnableDefaultNoneItems>
</PropertyGroup>
Właściwości analizy kodu
Następujące właściwości programu MSBuild są udokumentowane w tej sekcji:
- AnalysisLevel
- Kategoria AnalysisLevel<>
- AnalysisMode
- Kategoria AnalysisMode<>
- CodeAnalysisTreatWarningsAsErrors
- EnableNETAnalyzers
- EnforceCodeStyleInBuild
- _SkipUpgradeNetAnalyzersNuGetWarning
AnalysisLevel
Właściwość AnalysisLevel
umożliwia określenie zestawu analizatorów kodu do uruchomienia zgodnie z wydaniem platformy .NET. Każda wersja platformy .NET, począwszy od platformy .NET 5, ma zestaw reguł analizy kodu. W tym zestawie reguły, które są domyślnie włączone dla tej wersji, będą analizować kod. Jeśli na przykład uaktualnisz do platformy .NET 8, ale nie chcesz, aby domyślny zestaw reguł analizy kodu został zmieniony, ustaw wartość AnalysisLevel
7
.
<PropertyGroup>
<AnalysisLevel>preview</AnalysisLevel>
</PropertyGroup>
Opcjonalnie, począwszy od platformy .NET 6, 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 wersji zapoznawczej analizatorów kodu i włączono zalecany zestaw reguł.
<PropertyGroup>
<AnalysisLevel>preview-recommended</AnalysisLevel>
</PropertyGroup>
Wartość domyślna:
- Jeśli projekt jest przeznaczony dla platformy .NET 5 lub nowszej lub jeśli dodano właściwość AnalysisMode , wartość domyślna to
latest
. - 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. |
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. |
6.0 |
Używany jest zestaw reguł, które były dostępne dla wersji .NET 6, nawet jeśli są dostępne nowsze reguły. |
6.0-<mode> |
Używany jest zestaw reguł, które były dostępne dla wersji .NET 6, nawet jeśli są dostępne nowsze reguły. Wartość <mode> określa, które reguły są włączone. |
6 |
Używany jest zestaw reguł, które były dostępne dla wersji .NET 6, nawet jeśli są dostępne nowsze reguły. |
6-<mode> |
Używany jest zestaw reguł, które były dostępne dla wersji .NET 6, nawet jeśli są dostępne nowsze reguły. Wartość <mode> określa, które reguły są włączone. |
5.0 |
Używany jest zestaw reguł, które były dostępne dla wersji .NET 5, nawet jeśli są dostępne nowsze reguły. |
5.0-<mode> |
Używany jest zestaw reguł, które były dostępne dla wersji .NET 5, nawet jeśli są dostępne nowsze reguły. Wartość <mode> określa, które reguły są włączone. |
5 |
Używany jest zestaw reguł, które były dostępne dla wersji .NET 5, nawet jeśli są dostępne nowsze reguły. |
5-<mode> |
Używany jest zestaw reguł, które były dostępne dla wersji .NET 5, nawet jeśli są dostępne nowsze reguły. Wartość <mode> określa, które reguły są włączone. |
Uwaga
- Począwszy od platformy .NET 6, jeśli ustawisz wartość EnforceCodeStyleInBuild
true
na wartość , ta właściwość ma wpływ na reguły stylu kodu (IDEXXXX) (oprócz reguł jakości kodu). - Jeśli ustawisz wartość złożoną dla
AnalysisLevel
parametru , 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.
<PropertyGroup>
<AnalysisLevelSecurity>preview</AnalysisLevelSecurity>
</PropertyGroup>
<PropertyGroup>
<AnalysisLevelSecurity>preview-recommended</AnalysisLevelSecurity>
</PropertyGroup>
W poniższej tabeli wymieniono nazwę właściwości dla każdej kategorii reguł.
Nazwa właściwości | Kategoria reguły |
---|---|
<AnalysisLevelDesign> |
Reguły projektowania |
<AnalysisLevelDocumentation> |
Reguły dokumentacji |
<AnalysisLevelGlobalization> |
Reguły globalizacji |
<AnalysisLevelInteroperability> |
Reguły przenośności i współdziałania |
<AnalysisLevelMaintainability> |
Reguły konserwacji |
<AnalysisLevelNaming> |
Reguły nazewnictwa |
<AnalysisLevelPerformance> |
Reguły wydajności |
<AnalysisLevelSingleFile> |
Reguły aplikacji jednoplikowych |
<AnalysisLevelReliability> |
Reguły niezawodności |
<AnalysisLevelSecurity> |
Reguły zabezpieczeń |
<AnalysisLevelStyle> |
Reguły stylu kodu (IDEXXXX) |
<AnalysisLevelUsage> |
Reguły użycia |
AnalysisMode
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
.
<PropertyGroup>
<AnalysisMode>All</AnalysisMode>
</PropertyGroup>
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ź plik %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_minimum.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ź plik %ProgramFiles%/dotnet/sdk/[version]/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_[level]_recommended.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ą włączone przez ustawienie AnalysisMode na All lub przez ustawienie AnalysisLevel latest-all na : CA1017, CA1045, CA1005, CA1014, CA1060, CA1021 i reguły analizatora metryk kodu (CA1501, CA1502, CA1505, CA1506 i CA1509). 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
- Począwszy od platformy .NET 6, jeśli ustawisz wartość EnforceCodeStyleInBuild
true
na wartość , ta właściwość ma wpływ na reguły stylu kodu (IDEXXXX) (oprócz reguł jakości kodu). - Jeśli używasz wartości złożonej dla elementu AnalysisLevel,
<AnalysisLevel>8-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.
<PropertyGroup>
<AnalysisModeSecurity>All</AnalysisModeSecurity>
</PropertyGroup>
W poniższej tabeli wymieniono nazwę właściwości dla każdej kategorii reguł.
Nazwa właściwości | Kategoria reguły |
---|---|
<AnalysisModeDesign> |
Reguły projektowania |
<AnalysisModeDocumentation> |
Reguły dokumentacji |
<AnalysisModeGlobalization> |
Reguły globalizacji |
<AnalysisModeInteroperability> |
Reguły przenośności i współdziałania |
<AnalysisModeMaintainability> |
Reguły konserwacji |
<AnalysisModeNaming> |
Reguły nazewnictwa |
<AnalysisModePerformance> |
Reguły wydajności |
<AnalysisModeSingleFile> |
Reguły aplikacji jednoplikowych |
<AnalysisModeReliability> |
Reguły niezawodności |
<AnalysisModeSecurity> |
Reguły zabezpieczeń |
<AnalysisModeStyle> |
Reguły stylu kodu (IDEXXXX) |
<AnalysisModeUsage> |
Reguły użycia |
CodeAnalysisTreatWarningsAsErrors
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.
<PropertyGroup>
<CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors>
</PropertyGroup>
EnableNETAnalyzers
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 false
wartość .
<PropertyGroup>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
</PropertyGroup>
Uwaga
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
.
<PropertyGroup>
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
</PropertyGroup>
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.
<PropertyGroup>
<_SkipUpgradeNetAnalyzersNuGetWarning>true</_SkipUpgradeNetAnalyzersNuGetWarning>
</PropertyGroup>
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.
- AutoreleasePoolSupport
- ConcurrentGarbageCollection
- Niezmienna globalizacja
- PredefinedCulturesOnly
- RetainVMGarbageCollection
- ServerGarbageCollection
- ThreadPoolMaxThreads
- ThreadPoolMinThreads
- TieredCompilation
- TieredCompilationQuickJit
- TieredCompilationQuickJitForLoops
- TieredPGO
- UseWindowsThreadPool
AutoreleasePoolSupport
Właściwość AutoreleasePoolSupport
określa, czy każdy zarządzany wątek otrzymuje niejawną pulę NSAutoreleasePool podczas uruchamiania na obsługiwanej platformie macOS. Aby uzyskać więcej informacji, zobacz AutoreleasePool
temat Dotyczący zarządzanych wątków.
<PropertyGroup>
<AutoreleasePoolSupport>true</AutoreleasePoolSupport>
</PropertyGroup>
ConcurrentGarbageCollection
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.
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>
Niezmienna globalizacja
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.
<PropertyGroup>
<InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>
PredefinedCulturesOnly
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.
<PropertyGroup>
<PredefinedCulturesOnly>false</PredefinedCulturesOnly>
</PropertyGroup>
Aby uzyskać więcej informacji, zobacz Tworzenie kultury i mapowanie wielkości liter w trybie niezmiennym globalizacji.
RetainVMGarbageCollection
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.
<PropertyGroup>
<RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>
ServerGarbageCollection
Właściwość ServerGarbageCollection
określa, czy aplikacja używa odzyskiwania pamięci stacji roboczej, czy odzyskiwania pamięci serwera. Ustaw wartość na , aby true
używać odzyskiwania pamięci serwera. Aby uzyskać więcej informacji, zobacz Stacja robocza a serwer.
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
ThreadPoolMaxThreads
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.
<PropertyGroup>
<ThreadPoolMaxThreads>20</ThreadPoolMaxThreads>
</PropertyGroup>
ThreadPoolMinThreads
Właściwość ThreadPoolMinThreads
konfiguruje minimalną liczbę wątków dla puli wątków roboczych. Aby uzyskać więcej informacji, zobacz Minimalne wątki.
<PropertyGroup>
<ThreadPoolMinThreads>4</ThreadPoolMinThreads>
</PropertyGroup>
TieredCompilation
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.
<PropertyGroup>
<TieredCompilation>false</TieredCompilation>
</PropertyGroup>
TieredCompilationQuickJit
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.
<PropertyGroup>
<TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup>
TieredCompilationQuickJitForLoops
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.
<PropertyGroup>
<TieredCompilationQuickJitForLoops>true</TieredCompilationQuickJitForLoops>
</PropertyGroup>
TieredPGO
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.
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
UseWindowsThreadPool
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.
<PropertyGroup>
<UseWindowsThreadPool>true</UseWindowsThreadPool>
</PropertyGroup>
Właściwości powiązane z odwołaniem
Następujące właściwości programu MSBuild są udokumentowane w tej sekcji:
- AssetTargetFallback
- DisableImplicitFrameworkReferences
- DisableTransitiveFrameworkReferenceDownloads
- DisableTransitiveProjectReferences
- ManagePackageVersionsCentrally
- Właściwości związane z przywracaniem
- UseMauiEssentials
- ValidateExecutableReferencesMatchSelfContained
AssetTargetFallback
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.
<PropertyGroup>
<AssetTargetFallback>net461</AssetTargetFallback>
</PropertyGroup>
DisableImplicitFrameworkReferences
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.
<PropertyGroup>
<DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
</PropertyGroup>
DisableTransitiveFrameworkReferenceDownloads
Ustaw właściwość , aby true
uniknąć pobierania DisableTransitiveFrameworkReferenceDownloads
dodatkowych pakietów środowiska uruchomieniowego i pakietów docelowych, do których nie odwołuje się bezpośrednio projekt.
<PropertyGroup>
<DisableTransitiveFrameworkReferenceDownloads>true</DisableTransitiveFrameworkReferenceDownloads>
</PropertyGroup>
DisableTransitiveProjectReferences
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 true
wartość , ma podobny wpływ na ustawienie PrivateAssets="All"
dla wszystkich zależności projektu zależnego.
Jeśli ustawisz tę właściwość na true
wartość , możesz dodać jawne odwołania do tylko potrzebnych projektów.
<PropertyGroup>
<DisableTransitiveProjectReferences>true</DisableTransitiveProjectReferences>
</PropertyGroup>
ManagePackageVersionsCentrally
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.
Przykładowy plik Directory.Packages.props :
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
...
<ItemGroup>
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="7.0.0" />
</ItemGroup>
Pojedynczy plik projektu:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration" />
</ItemGroup>
Aby uzyskać więcej informacji, zobacz centralne zarządzanie pakietami (CPM) .
Właściwości związane z przywracaniem
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.
<PropertyGroup>
<RestoreIgnoreFailedSource>true</RestoreIgnoreFailedSource>
</PropertyGroup>
UseMauiEssentials
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
.
<PropertyGroup>
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
ValidateExecutableReferencesMatchSelfContained
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
.
<PropertyGroup>
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
</PropertyGroup>
WindowsSdkPackageVersion
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.
<PropertyGroup>
<WindowsSdkPackageVersion>10.0.19041.18</WindowsSdkPackageVersion>
</PropertyGroup>
Uwaga
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 :
RunArguments
Właściwość RunArguments
definiuje argumenty przekazywane do aplikacji podczas jej uruchamiania.
<PropertyGroup>
<RunArguments>-mode dryrun</RunArguments>
</PropertyGroup>
Napiwek
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.
<PropertyGroup>
<RunWorkingDirectory>c:\temp</RunWorkingDirectory>
</PropertyGroup>
Testowanie właściwości związanych z projektem
Następujące właściwości programu MSBuild są udokumentowane w tej sekcji:
- IsTestProject
- IsTestingPlatformApplication
- Enable[NugetPackageNameWithoutDots]
- EnableAspireTesting
- EnablePlaywright
- EnableMSTestRunner
- EnableNUnitRunner
- GenerateTestingPlatformEntryPoint
- TestingPlatformCaptureOutput
- TestingPlatformCommandLineArguments
- TestingPlatformDotnetTestSupport
- TestingPlatformShowTestsFailure
- TestingExtensionsProfile
- UseVSTest
IsTestProject
Właściwość IsTestProject
oznacza, że projekt jest projektem testowym. Gdy ta właściwość jest ustawiona na true
wartość , 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.
Aby na przykład włączyć rozszerzenie zrzutu awaryjnego (pakiet NuGet Microsoft.Testing.Extensions.CrashDump), ustaw wartość EnableMicrosoftTestingExtensionsCrashDump
true
.
Aby uzyskać więcej informacji, zobacz Włączanie lub wyłączanie rozszerzeń.
EnableAspireTesting
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.
Aby uzyskać więcej informacji, zobacz Testowanie za pomocą platformy .NET Aspire.
EnablePlaywright
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.
Aby uzyskać więcej informacji, zobacz Dramaturg.
EnableMSTestRunner
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 w GenerateTestingPlatformEntryPoint
celu false
wyłączenia automatycznego generowania punktu wejścia programu w projekcie testowym MSTest, NUnit lub xUnit. 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.
Aby uzyskać więcej informacji, zobacz Show complete platform output (Pokaż pełne dane wyjściowe platformy).
TestingPlatformCommandLineArguments
Właściwość TestingPlatformCaptureOutput
umożliwia określenie argumentów wiersza polecenia dla aplikacji testowej podczas uruchamiania dotnet test
Microsoft.Testing.Platform
testów. Poniższy fragment kodu pliku projektu przedstawia przykład.
<PropertyGroup>
...
<TestingPlatformCommandLineArguments>--minimum-expected-tests 10</TestingPlatformCommandLineArguments>
</PropertyGroup>
TestingPlatformDotnetTestSupport
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 true
wartość , 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.
Właściwości związane z hostingem
Następujące właściwości programu MSBuild są udokumentowane w tej sekcji:
AppHostDotNetSearch
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.
<PropertyGroup>
<AppHostDotNetSearch>Global</AppHostDotNetSearch>
</PropertyGroup>
W poniższej tabeli wymieniono prawidłowe wartości. Można określić wiele wartości rozdzielonych średnikami.
Wartość | Znaczenie |
---|---|
AppLocal |
Folder pliku wykonywalnego aplikacji |
AppRelative |
Ścieżka względem pliku wykonywalnego aplikacji określonego przez appHostRelativeDotNet |
EnvironmentVariables |
DOTNET_ROOT[_<arch>] Wartość zmiennych środowiskowych |
Global |
Zarejestrowane i domyślne globalne lokalizacje instalacji |
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.
<PropertyGroup>
<AppHostRelativeDotNet>./relative/path/to/runtime</AppHostRelativeDotNet>
</PropertyGroup>
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 true
EnableComHosting
wartość oznacza również, że parametr EnableDynamicLoading to true
.
<PropertyGroup>
<EnableComHosting>True</EnableComHosting>
</PropertyGroup>
Aby uzyskać więcej informacji, zobacz Uwidacznianie składników platformy .NET w modelu COM.
EnableDynamicLoading
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:
- Zostanie wygenerowany plik .runtimeconfig.json.
- Właściwość RollForward jest ustawiona na
LatestMinor
wartość . - Odwołania nuGet są kopiowane lokalnie.
<PropertyGroup>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
Wygenerowane właściwości pliku
Następujące właściwości dotyczą kodu w wygenerowanych plikach:
DisableImplicitNamespaceImports
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.
<PropertyGroup>
<DisableImplicitNamespaceImports>true</DisableImplicitNamespaceImports>
</PropertyGroup>
Niejawneusługacje
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
.
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Uwaga
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ą.
Aby zdefiniować jawną global using
dyrektywę , dodaj element Using .
Elementy
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, na przykład Include
i Update
, na tych elementach. 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ą.
<ItemGroup>
<AssemblyMetadata Include="Serviceable" Value="True" />
</ItemGroup>
InternalsVisibleTo
Element InternalsVisibleTo
generuje InternalsVisibleToAttribute atrybut zestawu dla określonego zestawu znajomego.
<ItemGroup>
<InternalsVisibleTo Include="MyProject.Tests" />
</ItemGroup>
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.
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
PackageReference
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 .
<ItemGroup>
<PackageReference Include="System.Runtime" Version="4.3.0" />
</ItemGroup>
Zasoby zależności można również kontrolować przy użyciu metadanych, takich jak PrivateAssets
.
<ItemGroup>
<PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
Aby uzyskać więcej informacji, zobacz Odwołania do pakietów w plikach projektu.
TrimmerRootAssembly
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.
<ItemGroup>
<TrimmerRootAssembly Include="System.Security" />
</ItemGroup>
Aby uzyskać więcej informacji, zobacz Opcje przycinania.
Używanie
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.
<ItemGroup>
<Using Include="My.Awesome.Namespace" />
</ItemGroup>
Możesz również użyć Using
elementu do zdefiniowania globalnych using <alias>
i using static <type>
dyrektyw.
<ItemGroup>
<Using Include="My.Awesome.Namespace" Alias="Awesome" />
</ItemGroup>
Na przykład:
<Using Include="Microsoft.AspNetCore.Http.Results" Alias="Results" />
Emitujeglobal using Results = global::Microsoft.AspNetCore.Http.Results;
<Using Include="Microsoft.AspNetCore.Http.Results" Static="True" />
Emitujeglobal using static global::Microsoft.AspNetCore.Http.Results;
Aby uzyskać więcej informacji, zobacz aliasowane using
dyrektywy i using static <type>
dyrektywy.
Metadane elementu
Oprócz standardowych atrybutów elementu MSBuild następujące tagi metadanych elementu są udostępniane przez zestaw .NET SDK:
CopyToPublishDirectory
Metadane CopyToPublishDirectory
elementu MSBuild steruje, gdy element jest kopiowany do katalogu publikowania. Dozwolone wartości to PreserveNewest
, które kopiują tylko element, jeśli został zmieniony, Always
, który zawsze kopiuje element i Never
, który nigdy nie kopiuje elementu. Z punktu widzenia wydajności zaleca się, PreserveNewest
ponieważ umożliwia kompilację przyrostową.
<ItemGroup>
<None Update="appsettings.Development.json" CopyToOutputDirectory="PreserveNewest" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
LinkBase
W przypadku elementu spoza katalogu projektu i jego podkatalogów element docelowy publikowania używa metadanych Link elementu, aby określić, gdzie skopiować element. Link
Okreś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
.
<ItemGroup>
<Content Include="..\Extras\**\*.cs" LinkBase="Shared"/>
</ItemGroup>
Na poniższej ilustracji przedstawiono sposób wyświetlania pliku dołączonego za pośrednictwem poprzedniego elementu Include
glob w Eksplorator rozwiązań.