2016-11-09 12 views
0

我是新來的c#,我驚呆了由我的發佈輸出生成的文件數量。如何清理我的VS2015發佈文件

我寫了一個非常簡單的程序,我想分發,沒有外部資產或任何特殊的東西。 但仍然有10-15個文件生成(.dlls,.pdbs,.configs等等)

我昨天做了一點研究,我覺得它根本無法清理這混亂沒有一個真正的大麻煩? (創建一個lib文件夾,並把所有東西都放在那裏,這很好,但程序停止工作,並拋出關於丟失文件的錯誤。)我試過Fody(根本不工作)和Tidybin(或類似的東西? )

我正在尋找一種方法來生成一個乾淨的版本。 理想情況下只是我的EXE,所有的DLL和其他東西嵌入,但我讀到的有關的一切只是高於我的頭,過於複雜(爲什麼不是這麼容易做?) 如果這是不可能的,我很樂意將除.exe之外的所有文件都移動到lib文件夾中。但這似乎並不奏效。我如何更新我的應用程序中的路徑,以便這些文件仍然可以找到?就像我說的那樣,這個插件似乎只做了一半的工作,而留下了所有的鏈接。

(邊注:爲什麼會出現不是所有這些插件的ducomentation任何種類我真的沒有絲毫的想法做什麼)

感謝

回答

1

如果你有一個簡單的應用程序,文件夾中不應該有那麼多。

其實,應該有:

  • 1 EXE,1個PDB(僅用於調試版本),爲應用程序1個exe.config文件
  • 1 EXE,1個PDB(僅用於調試版本) ,1個用於Visual Studio主機進程的exe.config文件

如果引用了System.Net.Http庫,則可能會創建一個具有許多本地化的文件夾。如果您不使用它:刪除參考。

請注意,您不需要部署所有這些文件!如果應用程序只引用框架DLL,則只需要.exe和.exe.config文件。

DLL將不會嵌入,但如果它們是框架庫,則不應將它們添加到輸出文件夾,除非您設置引用的「Copy Local」屬性。而且您不需要將它們與您的應用程序一起部署,無論如何它們都與目標系統上的.NET框架一起安裝。

如果您引用任何不屬於.NET Framework的DLL,通常會將它們與您的應用程序一起部署。將它們與應用程序一起放入文件夾是最容易的,但您也可以將它們放入目標系統的全局程序集緩存中。

There are將可執行文件,第三方DLL和內容打包到每次啓動應用程序時都解壓縮的EXE包裝中的解決方案,但我建議不要這樣做。用戶不會期望發生這種情況,病毒掃描程序可能會阻止此類內置機制。NET設置可能無法正常使用這些解決方案。

+0

我有nuget軟件包如htmlagility和tagLib。這是一個小項目,但所有這些dll都複製到該文件夾​​中。我如何確定哪些是需要的以及哪些可以安全地移除? – devman

+1

好吧,沒有一個exe/DLL文件可以被安全地移除。你應該假設Nuget依賴關係只添加他們實際需要的東西。所以如果你使用它們,你需要它們。如果您沒有真正使用它們,請從您的解決方案中刪除參考。您可以剝離pdb和XML文件(調試庫和文檔)以及Visual Studio主機進程文件。 –

0

分發代碼的最簡單方法是使用InstallShield Visual Studio版本。 (這是可用於您的Visual Studio許可證)

下載並註冊,然後添加一個新的分發項目到您的解決方案。

InstallShield Limited Edition for Visual Studio

嚮導將通過選擇主分發文件幫助你。它是發佈應用程序新版本的有用工具。

作爲我使用的第二個選項是ClickOnce(微軟),但是對於特定的內部應用程序。

ClickOnce Deployement