常見的 MSBuild 項目專案
在 MSBuild 中,專案是一或多個檔案的具名參考。 專案包含元數據,例如檔名、路徑和版本號碼。 Visual Studio 中的所有專案類型都有數個通用專案。 這些項目定義於 檔案 Microsoft.Build.CommonTypes.xsd中。
本文列出所有常見的項目專案。
Reference
表示專案中的元件 (Managed) 參考。
專案元數據名稱 | 描述 |
---|---|
HintPath | 選擇性字串。 元件的相對或絕對路徑。 |
名字 | 選擇性字串。 元件的顯示名稱,例如 「System.Windows.Forms」。。 |
FusionName | 選擇性字串。 指定項目的簡單或強式融合名稱。 當此屬性存在時,可能會節省時間,因為元件檔案不需要開啟即可取得融合名稱。 |
SpecificVersion | 選擇性布爾值。 指定是否只應參考融合名稱中的版本。 |
別名 | 選擇性字串。 參考的任何別名。 |
私人 | 選擇性布爾值。 指定是否應該將參考複製到輸出資料夾。 這個屬性會比對 Visual Studio IDE 中參考的 複製本機 屬性。 |
COMReference
表示專案中的 COM (Unmanaged) 元件參考。 此專案僅適用於 .NET 專案。
專案元數據名稱 | 描述 |
---|---|
名字 | 選擇性字串。 元件的顯示名稱。 |
Guid | 必要的字串。 元件的 GUID,格式為 {12345678-1234-1234-1234-123456781234}。 |
VersionMajor | 必要的字串。 元件版本號碼的主要部分。 例如,如果完整版本號碼為 「5.46」,則為 「5」。。 |
VersionMinor | 必要的字串。 元件版本號碼的次要部分。 例如,如果完整版本號碼為 「5.46」,則為 「46」。。 |
EmbedInteropTypes | 選擇性布爾值。 如果為 true,請將此參考中的 Interop 類型直接內嵌到您的元件,而不是產生 Interop DLL。 |
Lcid | 選擇性字串。 元件的LocaleID。 |
WrapperTool | 選擇性字串。 元件上使用的包裝函式工具名稱。 值為: 1. 主要 2. tlbimp 3. primaryortlbimp 4. aximp |
孤立 | 選擇性布爾值。 指定元件是否為無註冊元件。 |
COMFileReference
代表傳遞至 resolveComReference 目標 之 TypeLibFiles
參數的類型連結庫清單。 此專案僅適用於 .NET 專案。
專案元數據名稱 | 描述 |
---|---|
WrapperTool | 選擇性字串。 元件上使用的包裝函式工具名稱。 值為: 1. 主要 2. tlbimp 3. primaryortlbimp 4. aximp |
NativeReference
表示原生指令清單檔或這類檔案的參考。
專案元數據名稱 | 描述 |
---|---|
名字 | 必要的字串。 指令清單檔的基底名稱。 |
HintPath | 必要的字串。 指令清單檔的相對路徑。 |
ProjectReference
表示另一個項目的參考。
ProjectReference
專案會由 ResolveProjectReferences
目標轉換成 參考 專案,因此,如果轉換程式未覆寫,參考上的任何有效元數據在 ProjectReference
上都可能有效。
專案元數據名稱 | 描述 |
---|---|
名字 | 選擇性字串。 參考的顯示名稱。 |
GlobalPropertiesToRemove | 選擇性 string[] 。 建置參考專案時要移除的屬性名稱,例如 RuntimeIdentifier;PackOnBuild 。 預設值為空白。 |
專案 | 選擇性字串。 參考的 GUID,格式為 {12345678-1234-1234-1234-123456781234}。 |
OutputItemType | 選擇性字串。 要發出目標輸出的項目類型。 預設值為空白。 如果 Reference 元數據設定為 「true」 (預設值),則目標輸出會變成編譯程序的參考。 |
ReferenceOutputAssembly | 選擇性布爾值。 如果設定為 false ,則不包含參考項目的輸出做為此專案的 參考,但仍會確保其他專案會在此專案之前建置。 預設為 true 。 |
私人 | 選擇性布爾值。 指定是否應該將參考複製到輸出資料夾。 這個屬性會比對 Visual Studio IDE 中參考的 複製本機 屬性。 |
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 會使用這個專案做為空白資料夾的佔位元。 填入資料夾時,它會由另一個元素取代。