簡體   English   中英

基於解決方案的條件程序集引用

[英]conditional assembly references based on solution

我有一個相當大的解決方案,包含大約10個不同的項目。 到目前為止,我們已經將整個解決方案作為整體交付給客戶,但是我們正在考慮交付軟件的簡化版本。

為此,我想從解決方案中排除幾個項目。 我知道您可以防止在解決方案配置管理器中構建項目。 當選擇剝離配置時,可以使用宏禁用所有代碼引用。 不幸的是,這並不涉及項目參考。 我可以根據所選擇的配置使這些引用有條件嗎?

使用小腳本從項目文件中刪除項目引用應該很簡單-這只是刪除添加這些引用的行的一種情況。 項目文件格式非常簡單。

我懷疑這可能是最簡單的解決方案。

http://bytes.com/topic/net/answers/444853-conditional-assembly-reference中有很多信息,我發現它對於解決類似問題非常有用(盡管它比項目參考更重要於裝配參考)。 MSBuild從ProjectReference獲取程序集參考可能有助於在兩者之間架橋。

最好的選擇是為“精簡”的解決方案創建單獨的項目,該項目僅引用您想要的其他項目。 引用相同的代碼。 創建一個單獨的解決方案以將這些項目結合在一起。

它們也可以一起生活在同一文件夾結構中。

例如:

  • MySolution / MySolution.sln
  • MySolution / MyStrippedDownSolution.sln
  • MySolution / MyProject1 / MyProject1.csproj
  • MySolution / MyProject1 / MyStrippedDownProject1.csproj
  • MySolution / MyProject1 / MyClass1.cs
  • MySolution / MyProject2 / MyProject2.csproj
  • MySolution / MyProject2 / MyStrippedDownProject2.csproj
  • MySolution / MyProject2 / MyClass2.cs
  • MySolution / MyProject2 / MyProject3.csproj
  • MySolution / MyProject2 / MyClass3.cs

    • MyProject1和MyStrippedDownProject1參考MyClass1
    • MyProject2和MyStrippedDownProject2參考MyClass2
    • MyProject3和MyStrippedDownProject3參考MyClass3
  • MySolution引用MyProject1和MyProject2和MyProject3

  • MyStrippedDownSolution引用MyStrippedDownProject1和MyStrippedDownProject2
  • MyProject1引用MyProject2和MyProject3
  • MyStrippedDownProject1僅引用MyStrippedDownProject2-不引用-MyProject3

我認為應該在構建用於生產的項目時完成。 只需將需要消失的所有代碼放在編譯器級IF之間,即可檢查已定義的編譯器指令。 如果啟用,則IF和ENDIF之間的代碼將無法編譯。 這僅適用於代碼文件。

正如Jon Skeet所述,對於其他需要刪除的內容,只需根據文件格式自行調整即可。 但是,一旦將其放入構建腳本中,就不必再在乎它了-無需切換配置,等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM