在 MSBuild 中,專案是一或多個字串的具名參考,例如檔名。 專案包含元數據,例如檔名、路徑和版本號碼。 Visual Studio 中的所有專案類型都有數個通用專案。 這些項目定義於 檔案中,Microsoft.Build.CommonTypes.xsd。
本文列出 MSBuild 本身定義的所有通用項目專案。 .NET SDK 所提供的專案和屬性記載於 msBuild 參考中,Microsoft.Net.Sdk。
Reference
表示專案中的 .NET 元件 (Managed) 參考。
專案元數據名稱 | 描述 |
---|---|
HintPath | 選擇性字串。 元件的相對或絕對路徑。 |
名字 | 選擇性字串。 元件的顯示名稱,例如 「System.Windows.Forms」。。 |
FusionName | 選擇性字串。 指定項目的簡單或強式融合名稱。 當此屬性存在時,可能會節省時間,因為元件檔案不需要開啟即可取得融合名稱。 |
SpecificVersion | 選擇性布爾值。 指定是否只應參考融合名稱中的版本。 |
別名 | 選擇性字串。 參考的任何別名。 |
私人 | 選擇性布爾值。 指定是否應該將參考複製到輸出資料夾。 這個屬性符合 Visual Studio IDE 中參考的 Copy Local 屬性。 |
注意
例如,如果您用來Reference
產生 PIA(主要 Interop 元件),則tlbimp.exe
專案類型也可以用來參考原生 COM 物件的預先產生包裝函式元件。 當您想要自行使用已知輸入預先產生 COM 包裝函式元件,而不是依賴 MSBuild 的演算法在建置階段產生 COM 包裝函式時,這種參考是適當的選擇,這會導致相依於 MSBuild 執行所在組建計算機上系統登錄的狀態。
COMReference
表示專案中的 COM (Unmanaged) 元件參考。
ResolveComReference 工作會使用此項目來產生包裝函式元件,或者EmbedInteropTypes
如果使用 ,則會在元件中內嵌 Interop 類型。 使用這種類型的參考,會在建置機器上的系統登錄上引進相依性,用來查閱參考的 COM 物件。 當機器上安裝、更新或卸載產品時,登錄中的 COM 成品和 COM 專案可能會變更(或當您在不同的電腦上執行相同的組建時),即使建置邏輯尚未變更,也可能產生不同的包裝函式元件。
此專案不適用於 non-.NET 專案。
專案元數據名稱 | 描述 |
---|---|
名字 | 選擇性字串。 元件的顯示名稱。 |
Guid | 必要的字串。 元件的 GUID,格式為 {12345678-1234-1234-1234-123456781234}。 |
主要版本 | 必要的字串。 元件版本號碼的主要部分。 例如,如果完整版本號碼為 「5.46」,則為 「5」。。 |
VersionMinor | 必要的字串。 元件版本號碼的次要部分。 例如,如果完整版本號碼為 「5.46」,則為 「46」。。 |
EmbedInteropTypes | 選擇性布爾值。 如果為 true,請將此參考中的 Interop 類型直接內嵌到您的元件,而不是產生 Interop DLL。 |
Lcid | 選擇性字串。 元件的LocaleID。 |
WrapperTool | 選擇性字串。 元件上使用的包裝函式工具名稱。 值為: 1. 主要 2. tlbimp 3. primaryortlbimp 4. aximp |
孤立 | 選擇性布爾值。 指定元件是否為無註冊元件。 |
COMFileReference
表示依檔案路徑參考的類型連結庫清單,而不是使用系統登錄。 如果您想要避免相依於組建計算機的登錄,可能是 COMReference 的好替代方案,可能是因為執行組建的帳戶沒有較高的許可權可編輯組建伺服器上的登錄,或者您不希望組建相依於登錄的狀態。 如果您使用 COMFileReference
來參考系統路徑上的成品,則您的組建相依於系統狀態。 如果系統成品因為系統狀態的變更而變更,例如當產品安裝、更新或卸載時(或如果您在不同的計算機上執行相同的組建),則包裝函式元件可以變更,即使建置邏輯尚未變更也一樣。 若要確保建置結果一致,您可以在控件的位置快取 COM 成品的已知複本,例如專案或方案資料夾底下,並參考該複本,而不是系統成品。
此專案不適用於 non-.NET 專案。
專案元數據名稱 | 描述 |
---|---|
EmbedInteropTypes | 選擇性布爾值。 如果為 true,請將此參考中的 Interop 類型直接內嵌到您的元件,而不是產生 Interop DLL。 |
WrapperTool | 選擇性字串。 元件上使用的包裝函式工具名稱。 值為: 1. 主要 2. tlbimp 3. primaryortlbimp 4. aximp |
NativeReference
表示原生指令清單檔或這類檔案的參考。
專案元數據名稱 | 描述 |
---|---|
名字 | 必要的字串。 指令清單檔的基底名稱。 |
HintPath | 必要的字串。 指令清單檔的相對路徑。 |
專案引用
表示另一個項目的參考。
ProjectReference
專案會由 目標轉換成 ResolveProjectReferences
專案,因此,如果轉換程式未覆寫,參考上的任何有效元數據在 ProjectReference
上都可能有效。
專案元數據名稱 | 描述 |
---|---|
名字 | 選擇性字串。 參考的顯示名稱。 |
GlobalPropertiesToRemove | 選擇性 string[] 。 建置參考專案時要移除的屬性名稱,例如 RuntimeIdentifier;PackOnBuild 。 預設值為空白。 |
專案 | 選擇性字串。 參考的 GUID,格式為 {12345678-1234-1234-1234-123456781234}。 |
OutputItemType | 選擇性字串。 要發出目標輸出的項目類型。 預設值為空白。 如果 Reference 元數據設定為 「true」 (預設值),則目標輸出會變成編譯程序的參考。 |
ReferenceOutputAssembly | 選擇性布爾值。 如果設定為 false ,則不包含參考專案的輸出做為此項目的 參考 ,但仍會確保其他專案會在此專案之前建置。 預設為 true 。 |
私人 | 選擇性布爾值。 指定是否應該將參考複製到輸出資料夾。 這個屬性符合 Visual Studio IDE 中參考的 Copy Local 屬性。 |
SetConfiguration | 選擇性字串。 設定參考專案的全域屬性 Configuration ,例如 Configuration=Release 。 |
SetPlatform | 選擇性字串。 設定參考專案的全域屬性 Platform ,例如 Platform=AnyCPU 。 |
SetTargetFramework | 選擇性字串。 設定參考專案的全域屬性 TargetFramework ,例如 TargetFramework=netstandard2.0 。 |
SkipGetTargetFrameworkProperties | 選擇性布爾值。 如果 true ,則會建置參考的專案,而不需交涉最相容的 TargetFramework 值。 預設為 false 。 |
目標 | 選擇性 string[] 。 應建置之參考項目中的目標分號分隔清單。 預設值為 $(ProjectReferenceBuildTargets) 值,預設值為空白,表示預設目標。 在 Visual Studio 中建置時(與 MSBuild.exe 或 dotnet build 相反),指定這並不會防止 Visual Studio 建置參考專案的默認目標。 |
注意
.NET Framework 與 .NET Core 之間的項目參考運作方式有差異(包括 .NET 5 和更新版本)。 在 .NET Framework 專案中,項目參考不會轉移。 也就是說,如果 Project1 參考 Project2,而 Project2 參考 Project3,則您無法從 Project1 針對 Project3 撰寫程序代碼。 不過,在 .NET Core 中(包括 .NET 5 和更新版本),項目參考 可轉移。 您可以在 Project1 中針對 Project3 撰寫程式代碼。
編譯
表示編譯程式的來源檔案。
專案元數據名稱 | 描述 |
---|---|
DependentUpon | 選擇性字串。 指定此檔案相依的檔案,以正確編譯。 |
AutoGen | 選擇性布爾值。 指出檔案是否由Visual Studio集成開發環境 (IDE) 為項目產生。 |
連結 | 選擇性字串。 當檔案實際位於項目檔影響之外時所要顯示的表示法路徑。 |
可見 | 選擇性布爾值。 指出是否要在 Visual Studio 的 [方案 總管] 中顯示檔案。 |
CopyToOutputDirectory | 選擇性字串。 判斷是否要將檔案複製到輸出目錄。 值為: 1. 永不 2. 永遠 3. PreserveNewest 4. IfDifferent |
EmbeddedResource
表示要內嵌在產生的元件中的資源。
專案元數據名稱 | 描述 |
---|---|
文化 | 選擇性字串。 指定資源檔的文化特性。 如果指定,建置程式不會根據擴展名自動推斷文化特性(這取決於裝載組建之計算機上的 .NET/OS 可用的文化特性)。 強烈建議您設定 Culture={culture identifier} 或 WithCulture=false 元數據。 |
WithCulture | 選擇性布爾值。 指定檔案是文化特性中性,應該略過 AssignCulture 工作的文化特性偵測。 強烈建議您設定 Culture={culture identifier} 或 WithCulture=false 元數據。 |
DependentUpon | 選擇性字串。 指定此檔案相依的檔案,以正確編譯 |
發電機 | 選擇性字串。 在此專案上執行的任何檔案產生器名稱。 |
LastGenOutput | 選擇性字串。 由此項目上執行之任何檔案產生器所建立的檔名。 |
CustomToolNamespace | 選擇性字串。 在此專案中執行的任何檔案產生器都應該建立程式碼的命名空間。 |
連結 | 選擇性字串。 如果檔案實際位於項目影響之外,則會顯示表示法路徑。 |
可見 | 選擇性布爾值。 指出是否要在 Visual Studio 的 [方案 總管] 中顯示檔案。 |
CopyToOutputDirectory | 選擇性字串。 判斷是否要將檔案複製到輸出目錄。 值為: 1. 永不 2. 永遠 3. PreserveNewest 4. IfDifferent |
LogicalName | 必要的字串。 內嵌資源的邏輯名稱。 |
內容
表示未編譯至項目的檔案,但可能會內嵌或一起發行。
專案元數據名稱 | 描述 |
---|---|
DependentUpon | 選擇性字串。 指定此檔案相依的檔案,以正確編譯。 |
發電機 | 選擇性字串。 在此專案上執行的任何檔案產生器名稱。 |
LastGenOutput | 選擇性字串。 由此項目上執行之任何檔案產生器所建立的檔名。 |
CustomToolNamespace | 選擇性字串。 在此專案中執行的任何檔案產生器都應該建立程式碼的命名空間。 |
連結 | 選擇性字串。 如果檔案實際位於項目影響之外,則會顯示表示法路徑。 |
PublishState | 必要的字串。 內容的發佈狀態,可以是: -違約 -包括 -排除 - DataFile -先決條件 |
IsAssembly | 選擇性布爾值。 指定檔案是否為元件。 |
可見 | 選擇性布爾值。 指出是否要在 Visual Studio 的 [方案 總管] 中顯示檔案。 |
CopyToOutputDirectory | 選擇性字串。 判斷是否要將檔案複製到輸出目錄。 值為: 1. 永不 2. 永遠 3. PreserveNewest 4. IfDifferent |
TargetPath | 選擇性字串。 項目的輸出路徑(相對於組態和/或平臺特定輸出目錄),包括檔名。 如果提供,這會遵守 Link 元數據。 如果未提供 TargetPath,則會在建置程式期間加以計算。 請參閱 AssignTargetPath。 |
沒有
表示不應該在建置程式中具有任何角色的檔案。
專案元數據名稱 | 描述 |
---|---|
DependentUpon | 選擇性字串。 指定此檔案相依的檔案,以正確編譯。 |
發電機 | 選擇性字串。 在此專案上執行的任何檔案產生器名稱。 |
LastGenOutput | 選擇性字串。 由此項目上執行之任何檔案產生器所建立的檔名。 |
CustomToolNamespace | 選擇性字串。 在此專案中執行的任何檔案產生器都應該建立程式碼的命名空間。 |
連結 | 選擇性字串。 如果檔案實際位於項目影響之外,則會顯示表示法路徑。 |
可見 | 選擇性布爾值。 指出是否要在 Visual Studio 的 [方案 總管] 中顯示檔案。 |
CopyToOutputDirectory | 選擇性字串。 判斷是否要將檔案複製到輸出目錄。 值為: 1. 永不 2. 永遠 3. PreserveNewest 4. IfDifferent |
AssemblyMetadata
表示要產生為 [AssemblyMetadata(key, value)]
的元件屬性。
專案元數據名稱 | 描述 |
---|---|
包括 | 成為 AssemblyMetadataAttribute 屬性建構函式中的第一個參數(索引鍵)。 |
價值 | 必要的字串。 成為 AssemblyMetadataAttribute 屬性建構函式中的第二個參數(值)。 |
注意
此專案適用於使用 SDK for .NET 5 (和 .NET Core) 和更新版本的專案。
InternalsVisibleTo
指定要發出為 [InternalsVisibleTo(..)]
元件屬性的元件。
專案元數據名稱 | 描述 |
---|---|
包括 | 元件名稱。 |
鑰匙 | 選擇性字串。 元件的公鑰。 |
注意
此專案適用於使用 SDK for .NET 5 (和 .NET Core) 和更新版本的專案。
BaseApplicationManifest
代表組建的基底應用程式指令清單,並包含 ClickOnce 部署安全性資訊。
CodeAnalysisImport
表示要匯入的 FxCop 專案。
進口
表示 Visual Basic 編譯程式應該匯入命名空間的元件。
資料夾
只有 Visual Studio 會使用這個專案做為空白資料夾的佔位元。 填入資料夾時,它會由另一個元素取代。