2016-01-07 20 views
0

我想從Windows命令行編譯項目「MyProjectName」。批處理 - 錯誤通過編譯C#項目

這是代碼:

PUSHD E:\ 
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library Projects\MyProjectName /define:DEBUG /out:\Projects\MyProjectName\debug\MyProjectName.dll *.cs 

我得到的錯誤:

source file "Projects\MyProjectName" could not be found 
source file "*.cs" could not be found 
+0

我不認爲csc編譯器可以使用通配符編譯所有的.cs,而是需要編譯描述文件的.proj文件。 – npocmaka

+0

我的猜測是你只需要'Projects \ MyProjectName \ *。cs'。但爲什麼不把你的項目文件提供給msbuild? –

+0

@npocmaka:不,csc絕對*可以*處理通配符。 –

回答

0

如果當前的路徑是

C:\Windows\Microsoft.NET\Framework\v4.0.30319\ 

那麼相對路徑規範

Projects\MyProjectName 

將被視爲當前路徑的子目錄,它可能不是。指定項目目錄的絕對(根)路徑。

pushd命令似乎沒有任何效果,只需在驅動器盤符 - 否則,CSC會抱怨像「源文件E:\項目......未發現」與重新定位/目標開關和

工作液組合源參數:

csc.exe /out:\Projects\MyProjectName\debug\MyProjectName.dll /target:library Projects\MyProjectName\*.cs /define:DEBUG 
+0

熱點解決呢?寫E:\ Projects \ MyProjectName沒有幫助。 –

+0

我得到這個版本4.0.30319。 查看最新答案的最後一行。 更改如下: 1)將/ target開關置於源路徑之前(編譯器抱怨說,/ target和/ out必須在源之前) 2)將源路徑和通配符組合成一個參數 3)csc沒有創建調試子目錄。它失敗了,直到我手動創建它。 – dlatikay

+0

謝謝。編譯運行。問題是它沒有找到沒有.cs後綴的資源。我試圖將目標更改爲/ target:library Projects \ MyProjectName \ *。*,但後來發現其他錯誤。也許因爲這些資源的一部分在測試文件夾中。 –