各位前輩好:
小弟是一個對程式不熟(本身也不是該領域的),不過卻有一些透過小程式來解決工作問題的興趣,bat與powershell就不討論了,針對一些較複雜的問題需要處理,我常常是使用ASP.NET的環境使用C#來開發一些小程式,我是以新增->專案->建立主控台應用程式(.NET Framework)的方式來開始一些小程式的開發,程式內容多元,主要功能在提取一些我管理公司內部電腦所需要的資訊,譬如,防毒軟體狀態、USB使用紀錄、windows更新時間等(公司比較窮,沒有$$買相關DLP產品或稽核軟體),並且將收集的資料回傳到DB,這些小程式我是透過AD派送到用戶端背景執行的方式來運作。
但是我一直一些困擾,使用主控台應用程式(.NET Framework)的方式來開發,他產製的檔案是一整個資料夾,其中單獨的exe檔案是無法單獨執行的,如下圖:
其中checkagent0307.exe這支執行檔無法單獨運作,需要有整個資料夾的其他資料才可以,我目前的做法是透過makesfx這支程式來將整個資料夾包成一個exe檔案來運作,不過這會有兩個問題
(1)有些防毒軟體(如小紅傘)會將這類打包成的exe檔案判定為病毒
(2)感覺我一開始如果要寫執行檔,利用建立主控台應用程式方式開感覺是錯的
所以想問各位前輩,如果是使用ASP.NET C#開發,要用哪種方式或是專案類型開發,使的產出來的檔案就是一個單獨的執行程式,而非是整個資料夾呢,小弟寫程式自學,可能問了一個蠢問題,上網查詢資料又沒有頭緒,感恩前輩耐心看完本文並提供經驗?
要用哪種方式或是專案類型開發,使的產出來的檔案就是一個單獨的執行程式,而非是整個資料夾呢
恐怕答案是「兩者皆非」
用正規的方式是辦不到的
或者說
官方根本不提供這種機制
如果可以升級到.NET Core 3.0的話
就有機會了
雖然是「新瓶裝舊酒」的做法
不過對你和使用者而言
應該已經滿足需求了
現在都用 Linux 上開發 Java 了,
之前有用過 c# 及 VB.Net,
記得要 build 成 release 版本,
而且所有引用到的 lib ,不能是 dll。
實際可以參考:
如何製作獨立執行檔
Visual Studio編譯小技巧:工具程式一檔搞定
介紹好用工具:ILMerge (將多的 .NET 組件合併成單一組件)
「現在都用 Linux 上開發 Java 」
工作和家裡都是用 Linux 環境,
沒有 Windows 的環境了,
所以也一段時間沒有碰 .NET 的東西了。
如果沒辦法打包成單一執行檔,
應該也可以加入 path 的方法來執行。
比如說:
建立 runCheckAgent.cmd,
放到 checkagent0307.exe 所在的目錄下,
執行 runCheckAgent.cmd 會將 checkagent0307.exe 所在的目錄加入 path 之中,接著再執行 checkagent0307.exe。
然後把整個目錄 copy 到 c:\temp\CheckAgent 後,
直接執行 c:\temp\CheckAgent\runCheckAgent.cmd,
應該就可以了。
runCheckAgent.cmd 內容如下:
@echo off
set CurrDir=%~d0%~p0
set CurrDir=%CurrDir:~0,-1%
set path=%CurrDir%;%path%
start checkagent0307.exe
.