.net Core 踩坑記:生成、發布、IIS、調試


踩了一晚的坑,本想詳細寫下的,剛才回復同事消息花了些時間,要睡覺了,簡短寫下吧

 

1、發布

.net core不用不停地編譯了,只要保存即可,配合dotnet watch run就行,這玩意會實時編譯,類似java的jrebel

反而是手動編譯要報錯,如果IIS是指向開發目錄,會報不能覆蓋文件,就是生成的快捷鍵要去掉了,我原先是設置Ctrl + Shift + S是生成,因為原先改后端要不停生成,改前端用生成也會保存,所以就設置這個快捷鍵。現在要換回【全部保存】了

 

2、發布

發布到IIS,聽說不能覆蓋,也會報錯。只能發布到一個目錄,再手動復制過去才能覆蓋,直接用發布去覆蓋是不行的。網上這么說的,我沒試過。

 

3、IIS

之前寫過,直接用IIS是不行的,要裝SDK什么的,網上有。

裝完后,直接指向開發目錄也是不行的,會報不能覆蓋。指向發布目錄是可以,但總不能改個字就去發布一下吧(而且還可能也是無法覆蓋)

要把Web.Config里命令改成dotnet,參數改成watch run,這樣就可以了,還有個日志的參數可以開起來,記錄文本日志,便於報錯時排查問題。日志如果放在某目錄下,那個目錄要先建好,它不會直接建。

有了watch run,就可以保存后即生效(原理雖然也是dotnet停了再啟動,但非常快,和原先生成一樣,原先生成DLL本來也不快)

 

IIS可以直接配端口(相當於反向代理),如果是命令行要配端口,要改一行代碼,使用appsettings.json里的配置即可,如:"urls": "http://localhost:95;"

public class Program
    {
        public static void Main(string[] args)
        {
            var config = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: true)
                .Build();
            WebHost.CreateDefaultBuilder(args)
                .UseConfiguration(config)
                .UseStartup<Startup>()
                .Build().Run();
        }
    }

 

4、調試

附加到進程,用了網上寫.cmd來啟動(不用IIS)的方法,也是不行,仍然是好多個dotnet進程,我開了個WEB和API,都有八九個進程。。。都不知要附加哪個,不過附加第一個或第二個基本就可以,不知這個有沒有排序,還是靠運氣。

用IIS的話,也會有多個,但會好一些,一般一個項目有兩個(我開了WEB和API后有四個),也是靠猜,基本也是前兩個,搜了一圈沒有好辦法。

 

折騰一晚后,算是對各個配置項有了些理解,看網上下載的代碼,其它的都是正常的業務邏輯了,.net core就是開頭這些配置弄清楚,能正常開發,就可以了,還是有很多不同的,整體架構都不一樣了,所有想配置的地方也不一樣了,主要是配置項,語法完全一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM