2011-08-19 91 views
1

我想爲一個由多個c#項目和一個自定義項目組成的.NET解決方案構建腳本。自定義項目可以由devenv構建,但msbuild可以在其上創建。MSBuild可以忽略項目引用嗎? (BuildProjectReferences不起作用)

我想MSBuild忽略自定義項目,因爲我已經使用Exec任務構建它。我實際上需要MSBuild甚至不打開自定義.proj文件,因爲它是JSON格式,因此導致MSBuild崩潰。

/BuildProjectReferences = false開關不起作用。 MSBuild仍然嘗試讀取自定義項目文件。有沒有辦法解決?

回答

2

這個問題從一個項目,有一個SilverFrost的Fortran項目旁邊幾個C#類庫朵朵。該解決方案只能使用devenv進行編譯。 Msbuild會在Fortran項目上拋出一個錯誤,因爲它不使用標準的.csproj格式。

即使使用/ BuildProjectReferences = false,msbuild也會嘗試讀取Fortran項目並引發錯誤。我發現的解決方法是換行MSBuild任務在惡性任務,執行以下操作:

  1. 調用的Fortran語言的命令行編譯
  2. 去除使用xmlpoke任務等.csproj的項目,以項目的Fortran所有引用
  3. 替換所述具有直接dll引用到Fortran編譯器輸出
  4. 引用調用MSBUILD上所述修改的方案
0

而不是一次由MSBuild建立您的解決方案,嘗試建立每個項目一個接一個。在這種情況下,您可以忽略所需的項目。您也可以在這個新腳本中定義您自己的「基於Exec」的構建。

+0

的項目有-DEP間endent,因此當MSBuild將其列爲另一個項目中的依賴項時,MSBuild會嘗試打開該自定義項目。儘管我已經用'Exec'任務構建了依賴項目,但MSBuild仍然會嘗試打開它,以確定是否需要重建它。我想避免這種情況。 – duck9

0

在使用自定義項目的項目中,您可以右鍵單擊Project Dependencies並從列表中刪除自定義項目嗎?您可以參考自定義項目的二進制輸出。