<tbody id="j99e4"></tbody>

<dd id="j99e4"></dd>

  • <button id="j99e4"><object id="j99e4"></object></button>
      1. <th id="j99e4"></th>
        <button id="j99e4"><acronym id="j99e4"></acronym></button><rp id="j99e4"><object id="j99e4"><input id="j99e4"></input></object></rp>
        當前位置:首頁 > IT技術 > Web編程 > 正文

        Jekins 如何部署.net framework項目
        2022-09-06 22:58:33


        說明:本文中,“構建”“持續構建”“編譯”“生成”的用法并不嚴謹,大概知道是什么意思就行。

        首先說明,持續構建的話,是需要用到命令行的。
        但dotnet core的命令似乎比dotnet framework的項目要簡單一點。
        因為dotnetcore 的構建命令是 ???dotnet msbuild xxxxx.csproj/yyyyy.sln??? 而 dotnet framework的構建命令是 ??.../msbuild.exe xxxx.csproj/yyyyy.sln??,而其中最讓人(主要是沒掉過坑的人,掉過就好了)困惑的是這個??msbuild.exe??究竟是哪里的??msbuild.exe?? ?畢竟windows中安裝了dotnet framework SDK 或者不同版本的visual studio之后,是會有很多的??msbuild.exe??的,讓人不明白究竟該用哪個而已。


        下面開始講解在windows中如何構建一個 dotnet framework 項目,其中為了不讓項目本身的復雜度影響了主體思路,這里就認為是要構建的是一個類似于 ??Hello World??? 的簡單控制臺項目。
        綜上,環境:
        開發機,windows pc;
        發布機器,windows server;
        項目,一個簡單的dot net framework 控制臺項目。(我這里使用了4.5.2版本)


        1. 開發機上新建項目,最好是用代碼管理如git初始化,使得項目可以在其他機器上在有網的情況下可以clone得到。
        2. 開發機上隨便在項目里寫點什么,只要能編譯通過就行。比如??hello world???。
          另外,建議項目中添加一點對于nuget包的依賴,隨便選點什么,比如 log4net引用。
        3. 在開發機上嘗試編譯項目。
          (經過多次嘗試,確認了命令行編譯項目時候應該使用???C:windowsMicrosoft .NETFrameworkv4.xxxmsbuild.exe??? 這個msbuild.exe。不過具體還是根據項目類型,選擇是Framework64還是不帶64,是v4.xxx還是3.x,2.x,這個意思很簡單,看不懂就沒救了)
          如果項目在C:projects est 路徑下,那么編譯的命令應該是

        C:windowsMicrosoft .NETFramework??v4.xxx??msbuild.exe C:projects est est.sln

        或者

         C:windowsMicrosoft .NETFrameworkv4.xxxmsbuild.exe C:projects	est	est	est.csproj

        當然可能還需要帶 諸如 /p:Configuration=Release /p:plotform="Any CPU"等其余參數,自己看情況辦。
        4. 在測試機上,git clone項目,并用同樣命令嘗試編譯項目。
        5. 如果不成功, 就要不斷嘗試正確的msbuild.exe 和路徑,參數等,只要環境沒有問題,就一定可以成功。
        6. 但是,這里一個非常讓人抓狂的問題來了,nuget依賴怎么辦呢?現在我編譯沒有明顯問題,只是我怎么知道該到哪去找nuget包呢?
        這個問題就卡了我很久。
        上nuget官網,下載nuget.exe文件。
        經嘗試,這個文件放在項目中(即跟sln或者csproj文件同級的目錄下,執行 nuget.exe restore 命令,則可獲取到需要的nuget包。這也就是我經過多次嘗試后得到的經驗)
        那么,你可以在腳本中添加操作,每次都執行nuget.exe restore命令。
        也可以將nuget.exe添加到環境變量(不解釋),然后每次都執行,這樣會方便一點。
        7.最后再測試,發現發布機器上通過這樣的操作和命令,完全可以成功編譯項目。
        這離最終的成功已經很近了。
        實際上,對于理解何為jekins的人來說,這件事到這里就已經完畢了,剩下的都可以自己完成。


        1.上jekins官網,下載,安裝,啟動jekins,注冊賬戶,不解釋。dotnet 項目則需要安裝msbuild ,mstest ,mstestrunner插件。

        2.jenkins全局配置msbuild。

        Jekins 如何部署.net framework項目_nuget包找不到


        3. 新建項目,配置項目

        Jekins 如何部署.net framework項目_microsoft_02


        4. 構建項目。

        基本上構建成功,不成功也好排查。

        其實關于jekins的使用,更多的一共是自己學習,多次嘗試,才能明白。


        這其實是一篇信息量很大的博文,先暫時記錄一下,以后有機會再整理。沒有機會就這樣了。


        補充:

        1.如果開發機用VS可以編譯成功,但命令行中提示有不支持的語法。
        那么可能是開發機用了更高級的語法規則編譯(???盡管項目是基于.net??? framework 4.5.2的),比如用了C#6.0
        ???而發布機器只安裝了.net??? framework 4.5.2,那么就不支持有些最新的語法。
        所以在這種情況下,在發布機器上安裝最新的sdk。
        如圖。
        ???微軟官網SDK下載??? 下載相應的SDK即可。
        SDK里面已經包含了Runtime。

        2.如果Jekins的Job里需要用到windows的bat命令進行一系列操作,那么使用Jenkins的“ 參閱 可用環境變量列表 ” 會有一定幫助。
        寫法如 “%WORKSPACE%”

        3.如果路徑中有空格,如 ??C:Program Files (x86)Microsoft.NET???,則有必要在變量兩邊都加上雙引號。
        如:

        echo %WORKSPACE%

        rem 真實路徑
        set RootFolderPath=%WORKSPACE%
        set SourceFolder=%RootFolderPath%BEQDMicePaymentQDMice.PaymentSMS_Service
        set InstallUtilPath=C:WindowsMicrosoft.NETFrameworkv4.0.30319
        set DestExePath=%SourceFolder%inReleaseSMS_Service.exe
        set ServiceName=SMS_Service

        rem 停止,卸載服務
        net stop %ServiceName%
        %InstallUtilPath%InstallUtil.exe -u "%DestExePath%"

        rem 安裝,啟動服務
        echo %InstallUtilPath%InstallUtil.exe "%DestExePath%"
        %InstallUtilPath%InstallUtil.exe "%DestExePath%"

        echo net start %ServiceName%
        net start %ServiceName%


        本文摘自 :https://blog.51cto.com/u

        亚洲人成图偷偷小说_亚洲图片小说激情综合_国产精品亚洲自在线播放页码_久久综合亚洲色hezyo国产
        <tbody id="j99e4"></tbody>

        <dd id="j99e4"></dd>

      2. <button id="j99e4"><object id="j99e4"></object></button>
          1. <th id="j99e4"></th>
            <button id="j99e4"><acronym id="j99e4"></acronym></button><rp id="j99e4"><object id="j99e4"><input id="j99e4"></input></object></rp>