2013-12-11 107 views
0

我已經手動將dll,exe等從「C#Command Line」項目複製到UNC服務器共享,以便由計劃任務執行。如何從Visual Studio複製或部署c#命令行項目

有沒有人有一個建議,我可以把它變成一個簡單的操作在Visual Studio中?

這是我曾嘗試:

  1. 發佈嚮導。它詢問用戶如何安裝應用程序,這與我的情況完全無關。我只想把它放在服務器共享上。

  2. 項目屬性 - >發佈。這似乎與發佈嚮導相同。

  3. 包含在項目中的批處理文件或PowerShell腳本。我沒有看到從Visual Studio中啓動它的簡單方法。

+0

發佈嚮導會將這些文件放到UNC路徑上,但它也允許它從那裏運行。如果你只是選擇用戶脫機運行併發布它,你可以從unc路徑執行該項目的exe文件,它會工作得很好。 – Saren

+0

@Saran - 我在使用發佈嚮導時收到ClickOnce部署。我可以運行它,但它似乎是某種安裝過程。我看不到.config文件或最終的.exe,我懷疑我可以自動從計劃任務中執行它。 – Korey

+0

瀏覽到ClickOnce部署的文件夾,瀏覽到ApplicationFiles並單擊正確的版本。 EXE包含在該文件夾中,但如果需要,可以將這些文件複製/粘貼到UNC的根目錄,然後爲此計劃任務。我更喜歡從特定版本文件夾運行程序。 – Saren

回答

0

我不想在每次生成事件部署,我傾向於總是建立在調試模式下,所以漢斯上把條件到生成事件的建議不適合我情況。

爲什麼我總是使用調試模式?我的應用程序很小,適合內部使用。性能通常受限於外部約束,而不是C#代碼性能或內存大小。如果它不是一個可以記住它的狀態的下拉菜單,我會更舒適地使用它。當我使用它時,我忘記了,然後我一直在發佈模式下編譯,並想知道爲什麼.exe和.dlls沒有在Debug文件夾中更新。

我不完美的解決方案是在我的項目中包含批處理文件,並手動啓動命令行窗口來運行它們。這不是我想要的解決方案,但它對我來說是最好的妥協方案。

2

如果你只需要複製EXE /從輸出文件夾中的DLL您可以在Visual Studio中有一個生成後事件,並指定XCOPY命令到該文件夾​​的輸出複製到服務器的共享文件夾,如:

XCOPY $(OutDir) \\Server\folder 

enter image description here

如果你不想在每個複製建造,那麼你必須在文件服務器手動複製。您可以編寫一個批處理文件,並在完成後執行該文件。我不知道有什麼直接的方法在視覺工作室爲你做。

+0

我不想在每次構建後自動部署,只有在我有機會測試它之後。 – Korey

+0

@Korey,在這種情況下,你必須手動複製它,我沒有意識到Visual Studio中的任何東西都能幫你實現。您可以編寫批處理文件,然後在您對應用程序滿意後再執行該文件。 – Habib

2

使用生成後事件xcopy文件。您需要將其設置爲有條件,以便在選擇發佈版本時僅複製。使它看起來像這樣:

if not "$(OutDir)" == "bin\Release\" goto skip 
xcopy /d /y "$(TargetDir)*.*" \\foo\bar 
:skip 
相關問題