在VC++中,我可以按CTRL + F7來編譯單個文件,或者右鍵單擊源文件進行編譯。 是否有可能在C#中編譯單個文件(或當前文件)?如何在c#中編譯一個文件?
我想例如知道我的當前文件是否有任何錯誤,而無需編譯所有內容。
在VC++中,我可以按CTRL + F7來編譯單個文件,或者右鍵單擊源文件進行編譯。 是否有可能在C#中編譯單個文件(或當前文件)?如何在c#中編譯一個文件?
我想例如知道我的當前文件是否有任何錯誤,而無需編譯所有內容。
不,這是不可能在C#中做到這一點。
與C++不同,C#文件無法自行合理編譯以確定它是否有任何錯誤。 C++通過#include
語句實現了這一點,它允許.cpp文件理解可用類型的聲明。這些聲明定義了當前文件依賴的類型的結構,並允許編譯器確保它們按照規範使用。
此過程在C#中隱式處理。可用的聲明集合就是所有編譯文件中所有可以訪問的聲明的集合。無法以C++的方式轉發聲明依賴關係,因此無法確保它們在單個文件中正確使用。
像ReSharper這樣的Visual Studio插件工具對於這種情況來說是非常好的投資。
ReSharper執行連續的後臺解決方案範圍代碼分析,並通過在代碼文件旁邊方便地顯示一個條來報告問題。\具有紅色\橙色線條的文檔滾動條表示任何有問題\錯誤的代碼行。所顯示的行是點擊能夠導航到有問題的線路,也有工具提示,詳細說明確切的問題是什麼:
http://www.jetbrains.com/resharper/features/code_analysis.html#Continuous_Code_Quality_Analysis
http://www.jetbrains.com/resharper/features/screenshots/50/marker_bar.png
的問題\警告,ReSharper的可檢查可配置(但它具有出色的配置),並且可以表示任何錯誤,這些錯誤會導致代碼不能編譯爲更微妙的問題,因爲它檢測到可能的空方法調用結果,該結果尚未明確檢查。
Shift-F6會編譯當前程序集,它是差不多你想要的。
VS的哪個版本是這樣的?我試過Shift + F6,什麼都沒有發生。 – 2015-07-06 19:30:00
這可能是2008年,因爲它是在2010年發佈。 – 2015-07-07 13:58:46
在命令行: %WINDIR%\ Microsoft.Net \框架\ V3.5 \ CSC.EXE /目標:庫File.cs
你可以合理地附加至該解決方案通過探險工具上下文菜單 - >外部工具
設置參數/目標:庫$(ItemPath)
類似的東西可能會做你想要什麼。儘管該文件不得不依賴項目中的其他文件或除了GAC中的引用二進制文件。
對於單cs文件編譯+運行:
如果這不起作用,驗證您的路徑,cmd
和csc
匹配。
出色的工作。 此外,如果您使用的是Visual Studio 2010,請在步驟5中將** v3.5 **替換爲** v4.0.30319 **。 – 2014-08-08 03:17:17
是的,這是可能的。您可以使用命令提示符直接調用編譯器。即
csc hello.cs
hello.exe
這將至少告訴你單個文件是否編譯。你可以在這裏找到更多的信息:https://msdn.microsoft.com/en-us/library/78f4aasd.aspx
編譯單個程序集時,C#編譯器*非常快*,甚至包含大量代碼的程序集。你確定你真的被這個問題困擾嗎? – 2010-07-23 17:29:14