MSBuild 屬性會控制 目標的行為。 這些專案是在 MSBuild PropertyGroup 內的項目檔內指定,例如 MyApp.csproj。
AltoolPath
altool 工具的完整路徑。
預設行為是使用 xcrun altool。
AppBundleResourcePrefix
儲存資源的目錄(將資源複製到應用程式包時,將會移除此目錄的前綴)。
如果未明確設定,此屬性會從平臺特定的資源前置詞屬性繼承其值 (IPhoneResourcePrefix、 MonoMacResourcePrefix 或 XamMacResourcePrefix ,視平臺而定) 。
預設值:「資源」
AppBundleDir
建置應用程式套件的位置。
應用程序包額外選項
建立應用程式套件組合的進階額外參數。
有效的自變數集取決於平臺。
除非Microsoft工程師指定,否則通常不應該使用這些。
應用程式圖示
項目AppIcon群組可用來指定應用程式的圖示。
屬性的值必須指向資產類別目錄中影像資源的.appiconset檔名(適用於 iOS、macOS 和 Mac Catalyst)或.brandassets(適用於 tvOS)。
範例:
<PropertyGroup>
<!-- The value to put in here for the "Resources/MyImages.xcassets/MyAppIcon.appiconset" resource would be "MyAppIcon" -->
<AppIcon>MyAppIcon</AppIcon>
</PropertyGroup>
另請參閱:
- AlternateAppIcon 專案群組。
- IncludeAllAppIcons 屬性。
應用程式顯示版本
如果已設定,會在應用程式描述檔中指定 CFBundleShortVersionString 值(Info.plist)。
這是支援 .NET「單一專案」的屬性。
如需詳細資訊,請參閱 OneDotNetSingleProject 。
ApplicationId
如果已設定,會在應用程式描述檔中指定 CFBundleIdentifier 值(Info.plist)。
這是支援 .NET「單一專案」的屬性。
如需詳細資訊,請參閱 OneDotNetSingleProject 。
應用程式標題
如果設定,請在 CFBundleDisplayName 應用程式清單中指定 Info.plist 。
這是支援 .NET「單一專案」的屬性。
如需詳細資訊,請參閱 OneDotNetSingleProject 。
應用程序版本
如果設定,請在 CFBundleVersion 應用程式清單中指定 Info.plist 。
這是支援 .NET「單一專案」的屬性。
如需詳細資訊,請參閱 OneDotNetSingleProject 。
ArchiveBasePath
檔案儲存在 Windows 上以供遠端建置使用的位置。
預設值為: %LocalAppData%\Xamarin\iOS\Archives
僅適用於 iOS 專案(因為只能從 Windows 遠端建置 iOS 專案)。
ArchiveOnBuild
是否應該於建置結束時建立 Xcode 封存。
BGenEmitDebugInformation
工具是否應該bgen 發出偵錯資訊(系結產生器)。
當true屬性設定為Debug時,默認行為是true。
BGenExtraArgs
bgen 工具的任何額外參數(系結生成器)。
BGenToolExe
bgen 執行檔的名稱(這是一個系結專案用來生成系結的工具)。
預設行為是使用隨著我們的工作負載一同提供的 bgen 工具。
BGenToolPath
預設行為是使用隨著我們的工作負載一同提供的 bgen 工具。
BuildIpa
如果在組建結束時應該為應用程式套件組合建立套件 (.ipa)。
僅適用於 iOS 和 tvOS 專案。
請參閱 CreatePackage 適用於 macOS 和 Mac Catalyst 專案。
BundleCreateDump
CoreCLR 有一個命令列公用程式,createdump 可以在進程當機時建立核心轉儲。 macOS 會自動為任何 App Store 應用程序創建崩潰報告並將其提供給應用程序開發人員,因此該 createdump 工具對於許多 macOS 應用程序沒有用處,因此,默認情況下它不包含在應用程序中。
這可以透過設定屬性 BundleCreateDump 來覆蓋。
<PropertyGroup>
<BundleCreateDump>true</BundleCreateDump>
</PropertyGroup>
注意:該 createdump 工具目前不適用於沙箱應用程式 (#18961);
僅適用於使用 CoreCLR 運行時間的項目(在撰寫本文時,該運行時間僅適用於 macOS 項目)。
捆綁原始資源
這個屬性決定資源在嵌入到函式庫專案之前是否會被編譯,或是直接嵌入原始(未編譯)版本。
歷史上,資源通常在嵌入程式庫專案之前就已被編譯,但這需要有 Xcode 可用,這有一些缺點:
- 它會讓 Windows 上的遠端組建變慢。
- 在 Windows 本機建置時,它將無法運作,除了macOS之外,任何其他平臺上都不會運作。
- 資源是使用目前可用的 Xcode 來編譯的,當所需的函式庫被使用時,可能會與未來可能可用的較新版 Xcode 所具有的功能不同。
- 建置應用程式時,不可能對所有資源有一個完整程序視圖,而這是偵測資源衝突的必要條件。
因此,我們已新增支援將原始資源內嵌至程式庫的功能。 這將在 .NET 9 中提供選擇性加入,但從 .NET 10 開始將預設啟用,需要選擇性退出。
此屬性在 .NET 9 中的預設值為false,在 .NET 10+ 中為true。
備註
如果您發現需要停用此功能,請提出問題,因為未來可能會移除停用此功能的選項。
CodeignAllocate
工具的路徑 codesign_allocate 。
根據預設,這個值會自動偵測。
CodesignConfigureDependsOn
這是組建的延伸點:開發人員可以將任何目標新增至此屬性,以在組建查看任何共同設計屬性之前執行這些目標。
例如,這可用來停用模擬器組建的程式碼簽署:
<PropertyGroup>
<CodesignConfigureDependsOn>$(CodesignConfigureDependsOn);DisableCodesignInSimulator</CodesignConfigureDependsOn>
</PropertyGroup>
<Target Name="DisableCodesignInSimulator" Condition="'$(SdkIsSimulator)' == 'true'">
<PropertyGroup>
<EnableCodeSigning>false</EnableCodeSigning>
</PropertyGroup>
</Target>
CodesignDependsOn
這是組建的延伸點:開發人員可以將任何目標新增至此屬性,以在簽署應用程式套件組合之前執行這些目標。
範例:
<PropertyGroup>
<CodesignDependsOn>$(CodesignDependsOn);DoThisBeforeCodesign</CodesignDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCodesign">
<Exec Command="echo This is executed right before the app is signed." />
</Target>
CodesignEntitlements
權利檔案的路徑,指定應用程式所需的權利。
通常為「Entitlements.plist」。
如果專案根目錄中有這類檔案,我們會自動將此設定為 “Entitlements.plist”。
將 EnableDefaultCodesignEntitlements 屬性設定為 false,即可避免這種情況。
CodesignExtraArgs
簽署應用程式套件時,傳遞至「codesign」工具的額外參數。
CodesignKey
指定簽署應用程式套件組合時要使用的程式代碼簽署金鑰。
CodesignKeychain
程式代碼簽署期間要使用的金鑰鏈。
程式簽署金鑰 (CodeSigningKey)
指定簽署應用程式套件組合時要使用的程式代碼簽署金鑰。
僅適用於macOS和Mac Catalyst應用程式,但建議改用 CodeignKey 屬性(適用於所有平臺)。
協作設計配置
指定簽署應用程式套件組合時要使用的布建配置檔。
CodeignResourceRules
要將 ResourceRules.plist 複製到應用程式套件包的路徑。
CodeignRequireProvisioningProfile
指定在簽署應用程式包時是否需要提供布建配置檔。
根據預設,我們要求使用布建配置檔,如果:
- macOS、Mac Catalyst:已指定布建配置檔(具有 CodeignProvision 屬性)。
- iOS、tvOS:建置適用於裝置或指定的權利檔案(具有 CodesignEntitlements 屬性)。
將此屬性設定為 true 或 false 將會覆寫預設邏輯。
CompressBindingResourcePackage
zh-TW: 繫結專案中的原生參考會在建置過程中複製到接近繫結組件的輸出資料夾中(我們稱之為「繫結資源套件」)。
這些原生參照可以以壓縮檔形式儲存在名為$(AssemblyName).resources.zip的zip檔案中,或者維持原始形態儲存在名為$(AssemblyName).resources的目錄中。
屬性 CompressBindingResourcePackage 會指定要建立 zip 檔案還是目錄。
可能的值為:
-
auto:自動決定最佳選項 (目前一律會建立 zip 檔案,但一旦 Visual Studio 在 Windows 上支援長路徑,這可能會變更為僅具有符號連結的 zip 繫結資源套件)。 -
true:建立 zip 檔案 -
false:建立目錄
預設值為 auto。
這也適用於原生參考儲存在 NuGet 內的方式。
備註
在某些情況下,在 iOS 上強制使用 zip 檔案也是有益的,尤其是當有一個包含長名稱檔案的框架時,因為 zip 檔案有時可以解決 Windows 上的MAX_PATH問題。
建立應用程式包依賴項
這是組建的延伸點:開發人員可以將任何目標新增至此屬性,以在建立應用程式套件組合時執行這些目標。
範例:
<PropertyGroup>
<CreateAppBundleDependsOn>$(CreateAppBundleDependsOn);DoThisBeforeCreatingAppBundle</CreateAppBundleDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCreatingAppBundle">
<Exec Command="echo This is executed before the app bundle is created." />
</Target>
CreateIpaDependsOn
這是組建的延伸點:開發人員可以將任何目標新增至此屬性,以在建立IPA時執行這些目標。
適用於所有建置 IPA 封存的平臺(目前為 iOS 和 tvOS)。
範例:
<PropertyGroup>
<CreateIpaDependsOn>$(CreateIpaDependsOn);DoThisBeforeCreatingIPA</CreateIpaDependsOn>
</PropertyGroup>
<Target Name="DoThisBeforeCreatingIPA">
<Exec Command="echo This is executed before the IPA is created." />
</Target>
CreatePackage
如果應在建構完成後為應用程式套件組合建立一個套件(.pkg)。
僅適用於macOS和Mac Catalyst專案。
請參閱適用於 iOS 和 tvOS 專案的 BuildIpa 。
裝置專用建置
若建構過程須特定於選定的設備。
適用於支援裝置特定組建的所有平臺(目前為 iOS 和 tvOS)。
裝置特定中間輸出路徑
啟用特定裝置組建時,將使用的中繼輸出路徑。
適用於支援裝置特定組建的所有平臺(目前為 iOS 和 tvOS)。
設備特定輸出路徑
啟用特定裝置建置時要使用的輸出路徑。
適用於支援裝置特定組建的所有平臺(目前為 iOS 和 tvOS)。
診斷位址
正在執行的 dotnet-dsrouter IP 位址。 在模擬器上進行分析時,通常是 127.0.0.1;在裝置上進行分析時,則是機器的 IP 位址 dotnet-dsrouter。
這是 DiagnosticConfiguration' 的 IP 位址元件。
隱含地將 EnableDiagnostics 設定為 true。
預設為 127.0.0.1。
DiagnosticConfiguration
提供的dotnet-dsrouterDOTNET_DiagnosticPorts值,例如:
127.0.0.1:9000,suspend,connect127.0.0.1:9000,nosuspend,connect
請注意,如果需要將,字元傳遞到命令列中,需要使用 %2c 進行轉義才能正確傳遞給 dotnet build。
dotnet build -c Release -p:DiagnosticConfiguration=127.0.0.1:9000%2csuspend%2cconnect
這會自動設定 DOTNET_DiagnosticPorts 應用程式內部封裝的環境變數,以便在應用程式啟動時設定環境變數。
隱含地將 EnableDiagnostics 設定為 true。
預設行為是從其他診斷屬性 (DiagnosticAddress、 DiagnosticPort、 DiagnosticListenMode 和 DiagnosticSuspend) 計算此值。
如果設定,則會忽略任何其他診斷屬性。
診斷接聽模式
所提供的 dotnet-dsrouter 值,例如 connect 或 listen,用於 DiagnosticConfiguration` 的接聽模式元件。
隱含地將 EnableDiagnostics 設定為 true。
預設為 listen。
診斷埠
由dotnet-dsrouter提供的值,例如 9000,即DiagnosticConfiguration 的埠元件。
隱含地將 EnableDiagnostics 設定為 true。
預設為 9000。
診斷暫停
指定分析應用程式時啟動行為的值。
設定為 true 在啟動時暫停應用程式 (等候診斷伺服器連線到應用程式) ,或 false 如常啟動應用程式 (稍後將診斷伺服器連線到應用程式) 。
隱含地將 EnableDiagnostics 設定為 true。
預設為 false。
DittoPath
ditto 可執行檔的完整路徑。
預設行為是使用 /usr/bin/ditto。
嵌入隨需資源 (EmbedOnDemandResources)
如果是否應將隨選資源內嵌在應用程式的軟體包中。
預設值:true
啟用程式碼簽署 (EnableCodeSigning)
如果已啟用程式代碼簽署。
預設情況下,所有平台都啟用程式碼簽署;這可以用這個屬性覆寫。
啟用預設代碼簽署權限
請參閱 CodesignEntitlements。
啟用隨需資源
如果已啟用隨選資源。
默認值:在 macOS 中為 false,在其他所有平臺中為 true。
啟用套件簽署
如果已建立的 .pkg (且 CreatePackage 已啟用),則應該簽署。
僅適用於macOS和Mac Catalyst。
啟用診斷
啟用診斷所需的元件(例如程式代碼剖析)以使其正常運作。
預設會針對偵錯組建啟用它(啟用 MtouchDebug 或 MmpDebug 時),但必須在分析發行組建之前手動啟用:
<PropertyGroup>
<EnableDiagnostics>true</EnableDiagnostics>
</PropertyGroup>
這會稍微增加應用程式大小。
只有在使用Mono運行時間時才適用 (CoreCLR 一律支持診斷,而 NativeAOT 永遠不會支援)。
EnableSGenConc
啟用 SGen 垃圾回收器的並行模式。
僅適用於 iOS、tvOS 和 Mac Catalyst(不使用 NativeAOT 時)。
EventSource支援
當設定為 false時,會停用 。NET 的 EventSource 支援來自修剪的應用程式。 停用此功能會防止 .NET 診斷工具等 dotnet-counters 運作,但會減少應用程式大小。
預設值:設定為 false 當 Optimize 設定為 true(這是 Release 組建的預設值),除非 $(EnableDiagnostics) 已啟用。
生成應用程式清單
是否應該產生應用程式指令清單 (Info.plist)。
預設值:true
產生生成源目錄
生成器生產的來源儲存於哪裡。
包含所有應用程式圖示
將 IncludeAllAppIcons 屬性設定為 true,以自動包含應用程式中所有資產類別目錄中的所有應用程式圖示。
範例:
<PropertyGroup>
<IncludeAllAppIcons>true</IncludeAllAppIcons>
</PropertyGroup>
另請參閱:
- AlternateAppIcon 專案群組。
- AppIcon 屬性。
最低支援版本(iOS)
指定應用程式可執行的最低 iOS 版本。
適用於 iOS;設定此值將會設定 iOS 專案的 SupportedOSPlatformVersion (僅限)。
IPhoneResourcePrefix
儲存資源的目錄(將資源複製到應用程式包時,將會移除此目錄的前綴)。
適用於 iOS、tvOS 和 Mac Catalyst 專案。
請考慮改用統一的 AppBundleResourcePrefix 屬性。
另請參閱 MonoMacResourcePrefix 和 XamMacResourcePrefix。
IpaIncludeArtwork
如果需要在 IPA 中包含圖稿。
僅適用於 iOS 和 tvOS 專案。
IpaPackageName
指定建立 IPA 套件時產生的 .ipa 檔案名稱(不含路徑)。(請參閱 BuildIpa)。 IpaPackagePath 將會覆蓋此值。
僅適用於 iOS 和 tvOS 專案。
IpaPackageDir
指定建立 IPA 套件時產生的 .ipa 檔案目錄(請參閱 BuildIpa)。 IpaPackagePath 將會覆蓋此值。
僅適用於 iOS 和 tvOS 專案。
IpaPackagePath
指定建立 IPA 套件時產生的 .ipa 檔案路徑(請參閱 BuildIpa)。
僅適用於 iOS 和 tvOS 專案。
IsAppExtension
如果專案是應用程式延伸模組。
IsBindingProject
如果項目是系結專案, 則為 。
IsXPCService
如果 macOS 擴充功能是 xpc 服務。
僅適用於macOS專案。
連結模式
指定項目的連結模式(NoneSdkOnly或 Full)。
適用於macOS專案,但此屬性已被取代,請改用 TrimMode 。
另請參閱 MtouchLink。
與 Swift 系統程式庫連結 (LinkWithSwiftSystemLibraries)
如果設定為 true,則組建會告訴原生連結器在哪裡尋找 Swift 的系統連結庫。
這在原生連結庫以某種方式使用 Swift 時很有用,在此情況下,原生連結器必須知道哪裡可以找到 Swift 的系統連結庫。
目前這表示這些自變數會傳遞至原生連結器:
- -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/[platform]
- -L/Applications/Xcode.app/Contents/Developer/Platforms/[platform].platform/Developer/SDKs/[platform].sdk/usr/lib/swift
確切的自變數集可能會在未來變更。
Mac Catalyst最低版本
指定應用程式可執行的最低 Mac Catalyst (iOS) 版本。
適用於 Mac Catalyst;設定此值將會設定 Mac Catalyst 專案的 SupportedOSPlatformVersion (僅限)。
MaciOS準備建置依賴
可用來擴充建置程式的分號分隔屬性。 新增至此屬性的 MSBuild 目標將會在應用程式和程式庫專案類型的建置早期執行。 此屬性預設為空白。
範例:
<PropertyGroup>
<MaciOSPrepareForBuildDependsOn>$(MaciOSPrepareForBuildDependsOn);MyCustomTarget</MaciOSPrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
這個屬性是在 .NET 9 中引進的。
macOS最低版本
指定應用程式可執行的最低 macOS 版本。
設定此值將只會為 macOS 專案設定 SupportedOSPlatformVersion,僅適用於 macOS。
MacOSX SDK版本
要用於組建的 macOS SDK 版本。
默認值:根據所選 Xcode 隨附的預設版本自動偵測。
另請參閱 MtouchSdkVersion。
編組管理例外模式
選擇在處理受管控的例外狀況時,於堆疊回溯期間遇到原生框架時的處理方式。
有效值:
-
default:目前,這是throwobjectivecexception。 -
unwindnativecode:使用 CoreCLR 執行環境時不可用。 -
throwobjectivecexception:捕獲管理的例外狀況,並將其轉換成 Objective-C 例外狀況。 -
abort:中止進程。 -
disable:停用攔截任何受控的例外狀況。 對於MonoVM,這相當於unwindnativecode,針對CoreCLR,這相當於abort。
如需詳細資訊,請參閱 例外狀況封送處理 和 MarshalObjectiveCExceptionMode。
MarshalObjectiveCExceptionMode
選擇處理 Objective-C 例外狀況時,在堆疊回溯期間遇到受控框架時如何處理 Objective-C 例外狀況。
有效值:
-
default:目前,這是throwmanagedexception。 -
unwindmanagedcode:使用 CoreCLR 執行環境時不可用。 -
throwmanagedexception:攔截 Objective-C 例外狀況,並將它轉換成受控例外狀況。 -
abort:中止進程。 -
disable:停用攔截任何 Objective-C 例外狀況。
如需詳細資訊,請參閱 例外狀況封送處理 和 MarshalManagedExceptionMode。
MdimportPath
mdimport 工具的完整路徑。
預設行為是使用 xcrun mdimport。
MetalLibPath
工具(金屬連結器)的完整路徑是 metallib。
預設行為是使用 xcrun metallib。
MetalPath
金屬編譯程式的完整路徑。
預設行為是使用 xcrun metal。
指標支援
當設定為 false時,會停用修剪的應用程式中 .NET 的 度量 支援。 停用此功能會防止 API 等 System.Diagnostics.Metrics 運作,但有利於減少應用程式大小。
預設值:設定為 false 當 Optimize 設定為 true(這是 Release 組建的預設值),若 $(EnableDiagnostics) 沒有啟用。
MmpDebug
啟用應用程式封裝建立的偵錯模式。
僅適用於macOS專案。
另請參閱 MtouchDebug。
移動式激進屬性精簡
此屬性會決定是否應該修剪執行階段很少需要的大量屬性。
此功能預設為啟用。
請注意,雖然移除的屬性很少使用,但從技術上講,移除可能會變更執行階段行為。
例如,如果建構函式具有 [Obsolete] 屬性 (這是移除的其中一個屬性) ,則 System.Xml.Serialization 的行為會有所不同。 這風險足夠低,足以證明預設移除這些屬性是合理的,因為可以節省大小。
移除的屬性清單未來可能會變更,但在撰寫本文時 (針對 .NET 10),這些屬性是:
- Microsoft.CodeAnalysis.EmbeddedAttribute
- System.CLSCompliant屬性
- System.CodeDom.Compiler.GeneratedCodeAttribute
- System.ComponentModel.EditorBrowsable屬性
- System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute
- System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute
- System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute
- System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute
- System.Diagnostics.CodeAnalysis.ExperimentalAttribute
- System.Diagnostics.CodeAnalysis.FeatureGuard屬性
- System.Diagnostics.CodeAnalysis.FeatureSwitchDefinitionAttribute
- System.Diagnostics.CodeAnalysis.MemberNotNull屬性
- System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute
- System.Diagnostics.CodeAnalysis.NotNullIfNotNull屬性
- System.Diagnostics.CodeAnalysis.NotNullWhenAttribute
- System.Diagnostics.CodeAnalysis.RequiresAssemblyFilesAttribute
- System.Diagnostics.CodeAnalysis.RequiresDynamicCodeAttribute
- System.Diagnostics.CodeAnalysis.RequiresUnreferencedCodeAttribute
- System.Diagnostics.CodeAnalysis.StringSyntaxAttribute
- System.Diagnostics.CodeAnalysis.SuppressMessageAttribute
- System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute
- System.Diagnostics.CodeAnalysis.UnscopedRefAttribute
- System.Obsolete屬性
- System.Reflection.AssemblyCompanyAttribute屬性
- System.Reflection.AssemblyConfigurationAttribute(組件構造屬性)
- System.Reflection.AssemblyCopyrightAttribute
- System.Reflection.AssemblyDefaultAlias屬性
- System.Reflection.AssemblyDescriptionAttribute
- System.Reflection.AssemblyMetadataAttribute屬性
- System.Reflection.AssemblyProduct屬性
- System.Reflection.AssemblyTitle屬性
- System.Runtime.CompilerServices.AsyncMethodBuilderAttribute
- System.Runtime.CompilerServices.CallerArgumentExpressionAttribute
- System.Runtime.CompilerServices.CallerFilePath屬性
- System.Runtime.CompilerServices.CallerLineNumberAttribute
- System.Runtime.CompilerServices.CallerMemberNameAttribute
- System.Runtime.CompilerServices.CompilerFeatureRequiredAttribute
- System.Runtime.CompilerServices.CompilerGlobalScope屬性
- System.Runtime.CompilerServices.EnumeratorCancellationAttribute
- System.Runtime.CompilerServices.ExtensionAttribute
- System.Runtime.CompilerServices.InterpolatedStringHandlerArgumentAttribute
- System.Runtime.CompilerServices.InterpolatedStringHandlerAttribute
- System.Runtime.CompilerServices.IntrinsicAttribute
- System.Runtime.CompilerServices.IsReadOnly屬性
- System.Runtime.CompilerServices.IsUnmanaged屬性
- System.Runtime.CompilerServices.NativeIntegerAttribute
- System.Runtime.CompilerServices.RefSafetyRulesAttribute
- System.Runtime.CompilerServices.ScopedRefAttribute
- System.Runtime.CompilerServices.SkipLocalsInitAttribute
- System.Runtime.CompilerServices.TupleElementNamesAttribute
- System.Runtime.InteropServices.LibraryImportAttribute
- System.Runtime.InteropServices.Marshalling.ContiguousCollectionMarshallerAttribute
- System.Runtime.InteropServices.Marshalling.CustomMarshallerAttribute
- System.Runtime.InteropServices.Marshalling.MarshalUsingAttribute
- System.Runtime.InteropServices.Marshalling.NativeMarshallingAttribute
- System.Runtime.Versioning.NonVersionableAttribute
- System.Runtime.Versioning.ObsoletedOSPlatformAttribute
- System.Runtime.Versioning.RequiresPreviewFeaturesAttribute
- System.Runtime.Versioning.SupportedOSPlatformAttribute
- System.Runtime.Versioning.SupportedOSPlatformGuardAttribute
- System.Runtime.Versioning.TargetPlatformAttribute
- System.Runtime.Versioning.UnsupportedOSPlatformAttribute
- System.Runtime.Versioning.UnsupportedOSPlatformGuard屬性
此屬性是在 .NET 10 中引進的。
MonoBundlingExtraArgs
指定如何建立應用程式套件組合的其他自變數。
僅適用於macOS專案。
這個屬性已被取代,請改用 AppBundleExtraOptions 。
MonoMacResourcePrefix
儲存資源的目錄(將資源複製到應用程式包時,將會移除此目錄的前綴)。
僅適用於macOS專案。
請考慮改用統一的 AppBundleResourcePrefix 屬性。
另請參閱 IPhoneResourcePrefix 和 XamMacResourcePrefix。
MonoUseCompressedInterfaceBitmap
這會指示 Mono 執行階段使用介面點陣圖的壓縮版本 (介面點陣圖可用來判斷特定類型是否實作指定的介面) 。
這些點陣圖可能會在執行階段使用大量記憶體,特別是對於具有大量介面的應用程式。
此設定預設為停用,但可以像這樣啟用,這將減少執行階段使用的記憶體量:
<PropertyGroup>
<MonoUseCompressedInterfaceBitmap>true</MonoUseCompressedInterfaceBitmap>
</PropertyGroup>
缺點是類型檢查 (obj is SomeInterface) 會變慢。
僅適用於使用 Mono 執行階段時。
MtouchDebug
啟用應用程式封裝建立的偵錯模式。
適用於 iOS、tvOS 和 Mac Catalyst 專案。
另請參閱 MmpDebug。
MtouchEnableSGenConc
啟用 SGen 垃圾回收器的並行模式。
只有在不使用 NativeAOT 時,才適用於 iOS、tvOS 和 Mac Catalyst。
這個屬性已被取代,請改用 EnableSGenConc 。
MtouchExtraArgs
指定如何建立應用程式套件組合的其他自變數。
僅適用於 iOS、tvOS 和 Mac Catalyst 專案。
這個屬性已被取代,請改用 AppBundleExtraOptions 。
MtouchInterpreter
啟用解釋器,並可選擇性地接受逗號分隔的程序集清單進行解譯(如果前面加上減號,則該程序集將改為進行 AOT 編譯)。 'all' 可用來指定所有元件。 這個自變數可以指定多次。
範例:
<PropertyGroup>
<!-- interpret all assemblies -->
<MtouchInterpreter>all</MtouchInterpreter>
<!-- AOT-compile all assemblies, except System.dll, which will be interpreted. -->
<MtouchInterpreter>System</MtouchInterpreter>
<!-- interpret all assemblies, except System.Core.dll, which will be AOT-compiled. -->
<MtouchInterpreter>all,-System.Core</MtouchInterpreter>
</PropertyGroup>
MtouchInterpreter 的簡寫是設定 UseInterpreter=true,這相當於 MtouchInterpreter=all。
如果同時設定UseInterpreter和MtouchInterpreter,則MtouchInterpreter將優先使用。
適用於 iOS、tvOS 和 Mac Catalyst 應用程式(不使用 NativeAOT 時)。
默認行為是不要啟用解釋器。
備註
MAUI 會藉由為UseInterpreter=true配置設定"Debug"來變更預設值。
MtouchLink
指定項目的連結模式 (None、 SdkOnly、 Full
適用於 iOS、tvOS 和 Mac Catalyst 專案,但此屬性已被取代,請改用 TrimMode 。
另請參閱 LinkMode。
MtouchSdkVersion
要用於組建的 iOS 或 tvOS SDK 版本。
默認值:根據所選 Xcode 隨附的預設版本自動偵測。
另請參閱 MacOSXSdkVersion。
MtouchUseLlvm
布爾值屬性,指定是否應該使用 LLVM 完成 AOT 編譯。
適用於 iOS、tvOS 和 Mac Catalyst 專案。
預設:
- 在 iOS 和 tvOS 上:針對發行版本啟用(在
Configuration="Release"中)。 - 在 Mac Catalyst 上:預設永遠不會啟用。
無綁定嵌入
布林屬性,指定綁定專案中的原生程式庫是否應該內嵌在托管組件中,或放入托管組件旁邊的.resources目錄中。
預設值為 true(這表示原生函式庫不會 內嵌在受控組件中)。
備註
如果內嵌在Managed元件內,Xcframeworks 將無法正確運作(如果此屬性不是 true)。
NoDSymUtil
布爾值屬性,指定是否應該停用 .dSYM 產生。
預設:
-
true針對 iOS 和 tvOS 建置模擬器時。 -
true適用於macOS和Mac Catalyst,除非建立存檔 (ArchiveOnBuild=true)
這表示 .dSYM 封存將會在下列案例中產生(預設):
- 在iOS和tvOS上進行設備建置時。
- 在 macOS 和 Mac Catalyst 上建立封存時(
ArchiveOnBuild=true)。
NoSymbolStrip
布爾值屬性,指定偵錯符號是否會在建置時從應用程式中移除。
預設行為是保留下列項目的偵錯符號:
-
Debug適用於桌面平台的組建。 - 適用於行動平臺的模擬器版本。
保留偵錯符號的範例:
<PropertyGroup>
<NoSymbolStrip>true</NoSymbolStrip>
</PropertyGroup>
隨需資源初始安裝標籤
字串屬性,指定隨選資源的初始安裝標籤。
OnDemandResourcesPrefetchOrder
字串屬性,指定隨選資源的預先擷取順序。
按需資源網址
字串屬性,指定隨選資源的資源URL。
OptimizePNG
布爾值屬性,指定是否應該優化 png 影像。
優化PNG圖像依賴項
這是組建的延伸點:開發人員可以將任何目標新增至此屬性,以在優化任何 png 映像之前執行這些目標。
範例:
<PropertyGroup>
<OptimizePngImagesDependsOn>$(OptimizePngImagesDependsOn);MyCustomTarget</OptimizePngImagesDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
優化屬性列表
布爾屬性,用於指定是否應優化屬性列表(plists)。
最佳化屬性列表依賴性
這是組建的延伸點:開發人員可以將任何目標新增至此屬性,以在優化任何屬性清單 (plists) 之前執行這些目標。
範例:
<PropertyGroup>
<OptimizePropertyListsDependsOn>$(OptimizePropertyListsDependsOn);MyCustomTarget</OptimizePropertyListsDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
套件簽署金鑰
指定程式代碼簽署金鑰,以在建立macOS和Mac Catalyst專案的.pkg時簽署套件。
僅適用於macOS和Mac Catalyst 應用程式。
PackagingExtraArgs
指定在為 macOS 和 Mac Catalyst 專案建立 .pkg 時,傳遞至「productbuild」工具的任何額外參數。
僅適用於macOS和Mac Catalyst 應用程式。
PkgPackagePath
指定建立封裝時所產生.pkg檔案的路徑(請參閱 CreatePackage)。
僅適用於macOS和Mac Catalyst 應用程式。
PlutilPath
命令行工具的完整路徑 plutil 。
預設行為是使用 xcrun plutil。
PngCrushPath
命令行工具的完整路徑 pngcrush 。
預設行為是使用 xcrun pngcrush。
ProcessEnums
布林屬性,指定是否應將列舉作為繫結專案中的 API 定義進行處理。
ProductBuildPath
productbuild 工具的完整路徑。
預設行為是使用 xcrun productbuild。
產品定義
建立產品定義時要使用的產品定義範本 ,.plist以在建立套件時傳遞至產品建置工具(.pkg)。
僅適用於macOS和Mac Catalyst 應用程式。
參考本地符號
專案群組 ReferenceNativeSymbol 可用來指定我們應該如何處理指定的原生符號:忽略它,或要求原生連結器保留它(將符號當做 -u ... 或傳遞至原生連結器)。
中繼資料有兩種支援類型:
-
SymbolType:ObjectiveCClass、Function或Field。 用來計算符號的完整原生名稱(例如,Objective-C 類別MyClass的原生符號為_OBJC_CLASS_$_MyClass,而函MyFunction式則只是_MyFunction。 -
SymbolMode:不是Ignore就是未設定。Ignore表示不要將指定的符號傳遞至原生連結器,預設值是這樣做。
SymbolType 為必要的,而 SymbolMode 則不需要。
要保留的範例符號:
<ItemGroup>
<ReferenceNativeSymbol Include="MyClass" SymbolType="ObjectiveCClass" />
</ItemGroup>
要忽略的範例符號:
<ItemGroup>
<ReferenceNativeSymbol Include="MyClass" SymbolType="ObjectiveCClass" SymbolMode="Ignore" />
</ItemGroup>
RequireLinkWithAttributeForObjectiveCClassSearch
我們將會自動掃描所有對應至現有 Objective-C 類別之受控類別的程式庫,然後在建置時為這些 Objective-C 類別建立原生參照。
如此一來,原生連結器就不會移除這些 Objective-C 類別,認為它們不會使用。
不過,如果 Managed 類別參考不存在的 Objective-C 類別,這可能會造成問題。 正確的修正方式是從組建中移除這類 Managed 類別,但這可能會很麻煩,特別是如果 Managed 類別來自二進位參考(例如 NuGet)。
在這些情況下,可以將屬性 RequireLinkWithAttributeForObjectiveCClassSearch 設定為 true,這樣我們只會掃描具有 [LinkWith] 屬性的程式庫,以搜尋 Objective-C 類別:
<PropertyGroup>
<RequireLinkWithAttributeForObjectiveCClassSearch>true</RequireLinkWithAttributeForObjectiveCClassSearch>
</PropertyGroup>
RunWithOpen
此屬性會決定應用程式是在 macOS 上使用命令啟動 open ,還是直接執行應用程式的可執行檔。
這僅適用於 macOS 和 Mac Catalyst 應用程式。
預設值是 true。 在此模式下,應用程式將像任何其他 UI 應用程式一樣由 macOS 啟動,任何 stdout/stderr 輸出都會被 macOS 吞噬,並且命令 dotnet run 將在應用程式啟動後立即完成。
如果設定為 false,任何 stdout/stderr 輸出都會列印到目前的終端機,而且 dotnet run 命令在應用程式結束之前不會完成。
下列屬性可用來設定設定為 true (即使用 open 命令) 時的行為:
開啟新執行個體
如果應用程式已在執行中,則會開啟新的執行個體 (預設為 false)。
如果設定為 -n,則會傳遞open至 true 。
範例:
$ dotnet run -p:OpenNewInstance=false
OpenArguments
此屬性可用來將其他引數傳遞至 open 命令。
範例(設定環境變數):
$ dotnet run -p:OpenArguments="--env VARIABLE1=VALUE1 --env VARIABLE2=value2"
範例 (將 stdout 和 stderr 重新導向至檔案):
$ dotnet run -p:OpenArguments="--stdout /tmp/stdout.txt --stderr /tmp/stderr.txt"
執行 man open 以查看 open 接受的所有選項的清單。
標準輸出路徑
此屬性可用來將應用程式的 stdout 輸出重新導向至檔案。
寫入檔案的範例:
$ dotnet run -p:StandardOutputPath=stdout.txt
寫入當前終端機的示例:
$ dotnet run -p:StandardOutputPath=$(tty)
[... Console.WriteLine output from app ...]
注意:這也可以透過使用 --stdout ... 屬性傳遞來完成。
標準錯誤路徑
此屬性可用來將 stderr 輸出從應用程式重新導向至檔案。
寫入檔案的範例:
$ dotnet run -p:StandardErrorPath=stderr.txt
寫入目前終端機的範例:
$ dotnet run -p:StandardErrorPath=$(tty)
[... Console.Error.WriteLine output from app ...]
注意:這也可以透過使用 --stderr ... 屬性傳遞來完成。
標準輸入路徑
此屬性可用來將 stdin 輸入從檔案重新導向至應用程式。
範例:
$ dotnet run -p:StandardInputPath=stdin.txt
注意:這也可以透過使用 --stdin ... 屬性傳遞來完成。
SdkIs模擬器
此屬性是唯讀屬性 (設定它不會有任何作用) ,可指定我們是否要為模擬器建置。
只有在評估 匯入和屬性 之後,才會設定它。 這表示在評估專案檔中的屬性時未設定屬性,因此這 不 起作用:
<PropertyGroup>
<EnableCodeSigning Condition="'$(SdkIsSimulator)' == 'true'">false</EnableCodeSigning>
</PropertyGroup>
但是,以下任一有效:
<ItemGroup>
<!-- item groups (and their conditions) are evaluated after properties have been evaluated -->
<CustomEntitlements Condition="'$(SdkIsSimulator)' == 'true'" Include="com.apple.simulator-entitlement" Type="Boolean" Value="true" />
<CodesignConfigureDependsOn>$(CodesignConfigureDependsOn);ConfigureSimulatorSigning</CodesignConfigureDependsOn>
</ItemGroup>
<!-- targets are executed after properties have been evaluated -->
<Target Name="ConfigureSimulatorSigning">
<PropertyGroup>
<EnableCodeSigning Condition="'$(SdkIsSimulator) == 'true'">false</EnableCodeSigning>
</PropertyGroup>
</Target>
注意:此屬性將始終位於 false macOS和Mac Catalyst上。
StripPath
命令行工具的完整路徑 strip 。
預設行為是使用 xcrun strip。
支援的作業平台版本 (SupportedOSPlatformVersion)
指定應用程式可執行的最低 OS 版本。
您也可以使用平台特定屬性:
TrimMode
指定修剪粒度。
有效的選項如下:
-
full:修剪每個元件。 -
partial:修剪已選擇修剪的元件。 -
copy:不修剪任何組件。
備註
基於技術原因,修剪器必須針對所有 iOS、tvOS、macOS 和 Mac Catalyst 專案執行,即使不會修剪任何元件也一樣。 基於這個理由,將 PublishTrimmed 設定為 false 並不是有效的方式來停用修剪。若要停用修剪,應改為設定 TrimMode=copy。(如果將 PublishTrimmed 設定為 false,將會引發建置錯誤)。
屬性 TrimMode 相當於現有的 MtouchLink (適用於 iOS、tvOS 和 Mac Catalyst)和 LinkMode (適用於 macOS)屬性,但有效的屬性值不同(即使語意相同):
| MtouchLink/LinkMode | TrimMode |
|---|---|
| 完整 | 完整 |
| SdkOnly | 部份 |
| 沒有 | 複製 |
接下來, MtouchLink 和 LinkMode 屬性將會被取代,請改用 TrimMode 。
默認修剪模式取決於許多因素,未來也可能變更。
目前 (從 .NET 9 起) 預設值為:
- iOS 和 iOS:
partial針對實體裝置建置時,copy針對模擬器建置時。 - macOS:一律
copy。 - Mac Catalyst:當建置
partial配置時,"Release"否則為copy。
例外狀況:
- 使用 NativeAOT 建置時,預設值一律
full為 。 - MAUI 會在建置組
copy態時將預設值Debug變更為 ,並使用UseInterpreter啟用解釋器(MAUI也會在使用組態時"Debug"預設啟用此預設值)。
備註
默認修剪模式未來可能會變更。
tvOSMinimumVersion
指定應用程式可執行的最低 tvOS 版本。
適用於tvOS;設定此值將會設定 tvOS 專案的 SupportedOSPlatformVersion (僅限)。
使用浮動目標平台版本
布林屬性,可控制程式庫專案是否應該使用浮動目標平台版本或最舊的可用平台版本。
根據預設(自 .NET 10 起),若程式庫專案中未明確指定 TargetPlatformVersion,則會使用針對目前 .NET 版本可用的最舊參考組件。 這可確保最大的相容性,並允許程式庫程式碼針對目標框架可用的最小 API 介面進行編譯。
不過,此預設行為表示程式庫專案的建置方式與可執行專案 (使用最新的平台版本) 不同。 如果可執行專案中運作的程式碼使用僅在較新平台版本中可用的 API,則在移至程式庫專案時可能無法編譯。
將此屬性設定為 true 停用自動選取最舊的平台版本,讓程式庫專案像可執行專案一樣使用預設 (最新) 平台版本。
範例:
<PropertyGroup>
<!-- Use the latest platform version instead of the oldest -->
<UseFloatingTargetPlatformVersion>true</UseFloatingTargetPlatformVersion>
</PropertyGroup>
預設值: false (針對 .NET 10+ 中的程式庫專案使用最舊的平臺版本)。
此屬性僅適用於非應用程式延伸模組且未指定明確目標平台版本的程式庫專案 (OutputType=Library) (目標平台版本是屬性結尾 TargetFramework 的選擇性版本號碼,例如,對於 TargetFramework net10.0-ios26.0 ,目標平台版本是明確的 26.0)。
此屬性是在 .NET 10 中引進的。
UseHardenedRuntime
布爾值屬性,指定是否啟用強化運行時間。
適用於macOS和Mac Catalyst專案。
UseInterpreter
啟用解釋器(適用於所有元件)。
這相當於設定 MtouchInterpreter=all。
適用於 iOS、tvOS 和 Mac Catalyst 應用程式(不使用 NativeAOT 時)。
默認行為是不要啟用解釋器。
備註
MAUI 會藉由為UseInterpreter=true配置設定"Debug"來變更預設值。
如需詳細資訊,請參閱 MtouchInterpreter 。
UseNativeHttpHandler
HTTP 原生處理程式是否應該作為預設的 HTTP 處理程式。
默認值:macOS 以外的所有平臺皆為 true。
驗證權利
選擇是否應驗證應用程式要求的權限。
此屬性的有效值:
-
disable:驗證已停用。 -
warn:任何驗證失敗都顯示為警告。 -
error:任何驗證失敗都顯示為錯誤。 這是預設值。
驗證過程可能無法驗證每一項權限,也無法保證不會過於積極。
如果理應正常運作的權限驗證失敗,請提交新的問題報告。
ValidateXcodeVersion(驗證Xcode版本)
選擇是否應該驗證目前的 Xcode 版本。
預設值為要驗證;設定為 false 以停用。
備註
使用與建議版本不同的版本,可能會稍後在建置程式中產生問題。
XamMacResourcePrefix
儲存資源的目錄(將資源複製到應用程式包時,將會移除此目錄的前綴)。
適用於macOS專案。
請考慮改用統一的 AppBundleResourcePrefix 屬性。
另請參閱 IPhoneResourcePrefix 和 MonoMacResourcePrefix。
ZipPath
命令行工具的完整路徑 zip 。
預設行為是使用 xcrun zip。