ResolveAssemblyReference 工作

判斷相依於指定組件的所有組件 (包含第二階與第 n 階的相依)。 另 請參閱使用元件參考對建置錯誤進行疑難解答。

參數

下表說明 ResolveAssemblyReference 工作的參數。

參數 描述
AllowedAssemblyExtensions 選擇性的 String[] 參數。

在解析參考時所使用的組件副檔名。 預設延伸名為 exedll
AllowedRelatedFileExtensions 選擇性的 String[] 參數。

搜尋彼此相關檔案時所使用的副檔名。 預設延伸模組為 pdbxml
AppConfigFile 選擇性的 String 參數。

指定要從中剖析和擷取 bindingRedirect 對應的 app.config 檔案。 若指定此參數, AutoUnify 參數必須是 false
Assemblies 選擇性的 ITaskItem[] 參數。

指定完整路徑和相依性必須受到識別的項目。 這些項目可以具有像是 "System" 的簡單名稱,或是類似 "System, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 的強式名稱。

傳遞至這個參數的項目可以選擇性地擁有下列項目中繼資料:

- PrivateBoolean 值。 如果為 true,則在本機複製項目。 預設值是 true
- HintPathString 值。 指定要作為參考的路徑和檔案名稱。 在 參數中SearchPaths指定時{HintPathFromItem},會使用此元數據。 預設值為空字串。
- SpecificVersionBoolean 值。 如果為 true,則在 Include 屬性中指定的確切名稱必須相符合。 如果 false為 ,則任何具有相同簡單名稱的元件都適用。 如果未 SpecificVersion 指定,則工作會檢查項目屬性中的 Include 值。 若屬性是簡單名稱,則其行為會如同 SpecificVersionfalse。 若屬性是強式名稱,則其行為會如同 SpecificVersiontrue
搭配參考項目類型使用時, Include 屬性必須是組件的完整融合名稱才能受解析。 只有在融合完全符合 Include 屬性時,才會解析組件。
當專案以 .NET Framework 版本作為目標,並以針對較高的 .NET Framework 版本所編譯的組件時作為參考時,只有將 SpecificVersion 設定為 true
當專案以配置檔為目標並參考不在配置檔中的元件時,只有當參考設定 SpecificVersiontrue時,參考才會解析。
- ExecutableExtensionString 值。 如果有,則所解析的組件必須具有這個副檔名。 當不存在時, dll 會先考慮每個檢查的目錄,後面接著 .exe
- SubTypeString 值。 只有具有空白 SubType 元數據的專案會解析成完整的元件路徑。 會忽略無空 SubType 元數據的專案。
- AssemblyFolderKeyString 值。 舊版用途支援此中繼資料。 其會指定使用者定義的登錄機碼,例如 Assemblies 在解析組件參考時應該使用的 hklm\<VendorFolder>
AssemblyFiles 選擇性的 ITaskItem[] 參數。

指定要尋找相依性的完整組件清單。

傳遞至這個參數的項目可以選擇性地擁有下列項目中繼資料:

- Private:選擇性的 Boolean 值。 如果為 true,則在本機複製項目。
- FusionName:選擇性的 String 中繼資料。 指定此項目的簡單或強式名稱。 如果這個屬性存在,它可能會節省時間,因為元件檔不需要開啟即可取得名稱。
AssemblyInformationCacheOutputPath 選擇性的 String 參數。

如果不是 Null,則會將與 AssemblyFiles 輸入有關之與機器無關的資訊序列化至具名檔案。 此設定會覆寫一般的快取,因此只有在您建置具有許多參考的 SDK,並打算將快取寄送給您的客戶時,才使用此設定。
AssemblyInformationCachePaths 選擇性的 ITaskItem 參數。

如果不是 Null,如果 MSBuild 找不到 obj 資料夾中的一般快取,請使用這組快取作為輸入。 通常由 SDK 提供以改善第一次建置效能。
AutoUnify 選擇性的 Boolean 參數。

此參數用於建置元件,例如 DLL,不能有一般的 App.Config 檔案。

當為 true 時,會自動將產生的相依性圖形視為有 App.Config 檔案傳遞至 AppConfigFile 參數。 此虛擬 App.Config 檔案的每個衝突組件集合都有 bindingRedirect 項目,因此會選擇最高版本的組件。 因此,將不會出現有關衝突組件的警告,因為每個衝突都已經獲得解決。

當 時 true,每個不同的重新對應都會產生高優先順序批注,其中顯示舊版和新版本,也就是 AutoUnify true

當 為 時 true,參數必須是空的 AppConfigFile

如果為 false,則不會自動發生組件版本重新對應。 當有兩個版本的組件時,會發出警告。

如果為 false,不同版本相同組件間的每個衝突都會致使高優先順序的註解。 這些註解後面都會接著單一警告。 警告有唯一的錯誤碼,並包含文字,其內容為「發現不同參考版本與相依元件之間的衝突」。

預設值是 false
CandidateAssemblyFiles 選擇性的 String[] 參數。

指定要用於搜尋和解析處理序的組件清單。 傳遞至此參數的值必須是絕對檔案名稱或專案相關的檔案名稱。

當參數包含 {CandidateAssemblyFiles} 做為其中一個要考慮的路徑時 SearchPaths ,就會考慮此清單中的元件。
CopyLocalDependenciesWhenParentReferenceInGac 選擇性的 Boolean 參數。

如果為 true,表示要判斷是否應該在本機複製相依性,其中一項完成的檢查就是確認專案檔中的父參考是否已設定 Private 中繼資料。 若已設定,則會使用 Private 值做為相依性。

如果未設定元數據,則相依性會經歷與父參考相同的檢查。 其中一個檢查是為了查看參考是否在 GAC 中。 如果參考位於 GAC 中,則不會在本機複製,因為它假設位於目標電腦上的 GAC 中。 這只會套用於特定的參考,且不會套用於其相依性。

例如,GAC 中項目檔中的參考不會在本機複製,但其相依性會在本機複製,因為它們不在 GAC 中。

如果為 false,則會檢查項目檔參考是否位於 GAC 中,並視情況在本機複製。

系統會檢查相依性,以查看它們是否位於 GAC 中,也會檢查項目檔中的父參考是否在 GAC 中。

如果項目檔的父參考位於 GAC 中,則不會在本機複製相依性。

如果有多個父參考且其中任何一個不在 GAC 中,則此參數是否為 true 或 false,則所有參考都會在本機複製。
CopyLocalFiles 選擇性的 ITaskItem[] 唯讀輸出參數。

傳回 ResolvedFilesResolvedDependencyFilesRelatedFilesSatelliteFilesScatterFiles 參數中的每個檔案,這些檔案具有值為 CopyLocal true true
DependsOnNETStandard Boolean 輸出參數。

任何解析的主要參考是否與 .NET Standard 相依。
DependsOnSystemRuntime Boolean 輸出參數。

任何已解析的主要參考是否與 System.Runtime 相依。
DoNotCopyLocalIfInGac 選擇性的 Boolean 參數。

啟用舊版模式以進行 CopyLocal 判定。 如果為 true,如果在 GAC 中找到參考的元件,就不會在本機複製這些元件。 如果為 false,則除非只在 GAC 中找到元件,否則會複製到本機。 預設值是 false
FilesWritten 選擇性的 ITaskItem[] 輸出參數。

包含寫入磁碟的項目。
FindDependencies 選擇性的 Boolean 參數。

如果 true為 ,則會找到相依性。 否則,只會找到主要參考。 預設值是 true
FindDependenciesOfExternallyResolvedReferences 選擇性的 Boolean 參數。

即使已使用 ExternallyResolved=true 中繼資料標記參考,也仍然會強制逐步查看相依性。
FindRelatedFiles 選擇性的 Boolean 參數。

如果true為 ,則找到檔案和xml檔案等pdb相關檔案。 預設值是 true
FindSatellites 選擇性的 Boolean 參數。

如果 true為 ,則會找到附屬元件。 預設值是 true.
FindSerializationAssemblies 選擇性的 Boolean 參數。

如果為 true,工作會搜尋序列化組件。 預設值是 true
FullFrameworkAssemblyTables 選擇性的 ITaskItem[] 參數。

指定具有 FrameworkDirectory 元數據的專案,以將重做清單與特定架構目錄產生關聯。 如果未建立關聯,則會記錄錯誤。 如果未 FrameworkDirectory 設定,解析元件參考 (RAR) 邏輯會使用目標架構目錄。
FullFrameworkFolders 選擇性的 System.String[] 參數。

指定包含 RedistList 目錄的資料夾。 此目錄代表指定用戶端設定檔的完整架構,例如:%programfiles%\reference assemblies\microsoft\framework\v4.0
FullTargetFrameworkSubsetNames 選擇性的 String[] 參數。

包含目標 Framework 子集的名稱清單。 若清單中的子集名稱符合 TargetFrameworkSubset 命名屬性中的其中一個名稱,則系統會在建置階段排除特定的目標 Framework 子集。
IgnoreDefaultInstalledAssemblyTables 選擇性的 Boolean 參數。

如果為 true,則工作會搜尋並使用在 TargetFrameworkDirectories下的 \RedistList目錄中找到的其他已安裝組件表格 (或「可轉散發清單」)。 預設值是 false.
IgnoreDefaultInstalledAssemblySubsetTables 選擇性的 Boolean 參數。

如果為 true,則工作會搜尋並使用在 TargetFrameworkDirectories下的 \SubsetList 目錄中找到的其他已安裝組件子集表格 (或「子集清單」)。 預設值是 false.
IgnoreTargetFrameworkAttributeVersionMismatch 選擇性的 Boolean 參數。

如果 true為 ,則工作會解析以比目前專案更高的 .NET Framework 版本為目標的元件。 默認值為 false,會略過這些參考。
IgnoreVersionForFrameworkReferences 選擇性的 Boolean 參數。

若主要參考是架構組件,則忽略其版本資訊,並實際從目前的目標架構解析架構組件。
InstalledAssemblySubsetTables 選擇性的 ITaskItem[] 參數。

包含 XML 檔案清單,這些 XML 檔案指定了預期要在目標子集上的組件。

作為選項,此清單中的專案可以指定要 FrameworkDirectory 建立關聯的元數據 InstalledAssemblySubsetTable

與特定架構目錄產生關聯。

如果只有一個專案,則此清單中缺少FrameworkDirectory"元數據的任何專案都會被視為已設定為傳遞至TargetFrameworkDirectories的唯一TargetFrameworkDirectories值。
InstalledAssemblyTables 選擇性的 String 參數。

包含 XML 檔案清單,這些 XML 檔案指定了預期要在目標電腦上安裝的組件。

當設定 InstalledAssemblyTables 時,清單中較早版本的的組件會合併至列在 XML 中的較新版本。 此外,具有 InGAC='true' 設定的元件會被視為必要條件,除非明確覆寫,否則會設定為 CopyLocal='false'

作為選項,此清單中的專案可以指定要 FrameworkDirectory 與特定架構目錄建立關聯的 InstalledAssemblyTable 元數據。 不過,除非 Redist 名稱開頭如下,否則便會忽略這項設定:

Microsoft-Windows-CLRCoreComp.

如果只有一個專案,則此清單中缺少FrameworkDirectory元數據的任何專案都會被視為設定為傳遞的唯一TargetFrameworkDirectories

TargetFrameworkDirectories的唯一值。
LatestTargetFrameworkDirectories 選擇性的 String[] 參數。

指定目錄的清單,這些目錄包含電腦上可作為目標之最新版架構的可轉散發清單。 如果未設定,則會使用計算機上針對指定目標架構標識碼安裝的最高架構。
OutputUnresolvedAssemblyConflicts 選擇性的 Boolean 參數。

如果為 true,則會將與診斷代碼 MSB3277 發生衝突的任何未解決組件輸出至輸出 UnresolveAssemblyConflicts
ProfileName 選擇性的 String 參數。

指定要作為目標之 Framework 設定檔的名稱。 例如,用戶端、Web 或網路。 僅與 .NET Framework 設定檔相關。
RelatedFiles 選擇性的 ITaskItem[] 唯讀輸出參數。

包含相關的檔案,例如 XML 和 pdb 與參考具有相同基底名稱的檔案。

這個參數中列出的檔案可選擇性包含下列項目中繼資料:

- PrimaryBoolean 值。 如果為 true,則會使用 Assemblies 參數。 預設值為 false
- CopyLocalBoolean 值。 表示是否將指定的參考複製到輸出目錄中。
ResolvedDependencyFiles 選擇性的 ITaskItem[] 唯讀輸出參數。

包含相依性的第 n階路徑。 此參數不包含參數中包含的 ResolvedFiles 第一個順序主要參考。

這個參數中的項目可選擇性包含下列項目中繼資料:

- CopyLocalBoolean 值。 表示是否將指定的參考複製到輸出目錄中。
- FusionNameString 值。 指定此相依性的名稱。
- ResolvedFromString 值。 指定解析此檔案的來源常值搜尋路徑。
ResolvedFiles 選擇性的 ITaskItem[] 唯讀輸出參數。

包含所有解析為完整路徑的主要參考清單。

這個參數中的項目可選擇性包含下列項目中繼資料:

- CopyLocalBoolean 值。 表示是否將指定的參考複製到輸出目錄中。
- FusionNameString 值。 指定此相依性的名稱。
- ResolvedFromString 值。 指定解析此檔案的來源常值搜尋路徑。
ResolvedSDKReferences 選擇性的 ITaskItem[] 參數。

已解析的 SDK 參考清單,其中包含 SDK 名稱、SDK 位置和目標組態。 只有在參考已 SDKName 附加元數據時,才會搜尋這些位置。
SatelliteFiles 選擇性的 ITaskItem[] 唯讀輸出參數。

指定找到的任何附屬檔案。 如果造成此項目的參考或相依性存在,則這些 CopyLocal=true 檔案為 CopyLocal=true

這個參數中的項目可選擇性包含下列項目中繼資料:

- CopyLocalBoolean 值。 表示是否將指定的參考複製到輸出目錄中。 如果讓此項目可以存在的參考或相依性具有值為 trueCopyLocal ,則此值為 true
- DestinationSubDirectoryString 值。 指定要將此項目複製到其中的相對目的地目錄。
ScatterFiles 選擇性的 ITaskItem[] 唯讀輸出參數。

包含與其中一個指定之組件相關聯的散佈檔案。

這個參數中的項目可選擇性包含下列項目中繼資料:

- CopyLocalBoolean 值。 表示是否將指定的參考複製到輸出目錄中。
SearchPaths 必要的 String[] 參數。

指定要搜尋的目錄或特殊位置,以找出磁碟上代表組件的檔案。 搜尋路徑的列示順序很重要。 對每個組件而言,都會從左至右搜尋路徑清單。 當找到代表組件的檔案時,此搜尋會停止並開始搜尋下一個組件。

此參數接受以分號分隔的值清單,這些值可以是目錄路徑或下列清單的特殊常值:

- {HintPathFromItem}:指示工作檢查 HintPath 基底專案的元數據。
- {CandidateAssemblyFiles}:指示工作檢查透過 參數傳入的 CandidateAssemblyFiles 檔案。
- {Registry:<AssemblyFoldersBase>、 <RuntimeVersion>、 <AssemblyFoldersSuffix>}:指示工作在登錄中指定的其他資料夾中搜尋。 應該用要搜尋之登錄位置的特定值,來取代 <AssemblyFoldersBase>、<RuntimeVersion> 和 <AssemblyFoldersSuffix>。 常見目標中的預設規格是 {Registry:$(FrameworkRegistryBase), $(TargetFrameworkVersion), $(AssemblyFoldersSuffix), $(AssemblyFoldersExConditions)}。
- {AssemblyFolders}:指示工作使用 Visual Studio.NET 2003 finding-assemblies-from-registry 配置。
- {GAC}:指示工作在全域程式集緩存中搜尋 (GAC)。
- {RawFileName}:指定工作會將項目的 Include 值視為確切的路徑和檔案名稱。
SerializationAssemblyFiles 選擇性的 ITaskItem[] 唯讀輸出參數。

包含任何找到的 XML 序列化組件。 這些項目被標示為 CopyLocal = true 與造成此項目存在的相依性是 CopyLocal = true 互為充要條件。

Boolean 中繼資料 CopyLocal 表示是否將指定的參考複製到輸出目錄中。
Silent 選擇性的 Boolean 參數。

如果為 true,則不會記錄任何訊息。 預設值是 false
StateFile 選擇性的 String 參數。

指定檔名,表示要在該檔案中儲存這項工作的中繼建置狀態。
SuggestedRedirects 選擇性的 ITaskItem[] 唯讀輸出參數。

不論 AutoUnify 屬性的值為何,都會包含每個不同衝突組件識別的一個項目。 這包括在應用程式組態檔中找不到適當 bindingRedirect 專案的每個文化特性和 PKT。

每個項目都可選擇包含下列資訊:

- Include attribute:包含元件系列的完整名稱,且版本域值為 0.0.0.0
- MaxVersion 項目中繼資料:包含最大版本號碼。
SupportsBindingRedirectGeneration 選擇性的 Boolean 參數。

在支援的專案上將此設定為 true,以自動產生繫結重新導向 (目前僅針對 EXE 專案提供支援)。
TargetedRuntimeVersion 選擇性的 String 參數。

指定要作為目標的執行階段版本,例如:2.0.57027 或 v2.0.57027。
TargetFrameworkDirectories 選擇性的 String[] 參數。

指定目標 Framework 目錄的路徑。 需要此參數,才能判斷 CopyLocal 結果項目的狀態。

如果未指定此參數,則除非專案在其來源項目上明確具有 CopyLocal true 的元數據值true,否則不會有 Private 的值。
TargetFrameworkMoniker 選擇性的 String 參數。

TargetFrameworkMoniker要監視的 ,如果有的話。 此參數用於記錄。
TargetFrameworkMonikerDisplayName 選擇性的 String 參數。

要監視之 TargetFrameworkMoniker 的顯示名稱 (若有的話)。 此參數用於記錄。
TargetFrameworkSubsets 選擇性的 String[] 參數。

包含要在目標 Framework 目錄中搜尋之目標 Framework 子集名稱的清單。
TargetFrameworkVersion 選擇性的 String 參數。

專案目標 Framework 版本。 默認值是空的,這表示不會根據目標架構篩選參考。
TargetProcessorArchitecture 選擇性的 String 參數。

慣用的目標處理器架構。 用來解析全域組件快取 (GAC) 參考。

此參數可以具有 x86IA64AMD64 的值。

若此參數不存在,工作會先考慮使用符合目前正在執行之處理序架構的組件。 若找不到任何組件,則工作會考慮 GAC 中具有 ProcessorArchitectureMSIL 值或不具有 ProcessorArchitecture 值的組件。
UnresolvedAssemblyConflicts 選擇性的 ITaskItem[] 唯讀輸出參數。

如果參數 OutputUnresolvedAssemblyConflictstrue,則會將此設定為一份資訊清單,內容與通常在 MSB3277 中輸出的未解決衝突有關。 否則為空白。
UnresolveFrameworkAssembliesFromHigherFrameworks 選擇性的 Boolean 參數。

如果設定為 true,則會強制將版本較高或等於目標架構版本的架構組件設為未解決的狀態。
WarnOrErrorOnTargetArchitectureMismatch 選擇性的 String 參數。

如果目標處理器架構與主要參考的架構不符,則當這是 Error時,會記錄錯誤;當記錄警告時 Warning,則不會記錄 None任何錯誤或警告。 預設為 Warning

警告

將記錄下列警告:

  • ResolveAssemblyReference.TurnOnAutoGenerateBindingRedirects

  • ResolveAssemblyReference.SuggestedRedirects

  • ResolveAssemblyReference.FoundConflicts

  • ResolveAssemblyReference.AssemblyFoldersExSearchLocations

  • ResolveAssemblyReference.UnifiedPrimaryReference

  • ResolveAssemblyReference.PrimaryReference

  • ResolveAssemblyReference.UnifiedDependency

  • ResolveAssemblyReference.UnificationByAutoUnify

  • ResolveAssemblyReference.UnificationByAppConfig

  • ResolveAssemblyReference.UnificationByFrameworkRetarget

備註

除了上述所列的參數,此項工作還會繼承 TaskExtension 類別中的參數,而該類別本身又繼承 Task 類別。 如需這些其他參數的清單及其描述,請參閱 TaskExtension 基底類別

另請參閱