{ "version": "https://jsonfeed.org/version/1", "title": ".NET", "description": "", "home_page_url": "go/dotnet", "feed_url": "feed/dotnet.json", "icon": "https://cdn.v2ex.com/navatar/0bb4/aec1/349_large.png?m=1579009691", "favicon": "https://cdn.v2ex.com/navatar/0bb4/aec1/349_normal.png?m=1579009691", "items": [ { "author": { "url": "member/octalempyrean", "name": "octalempyrean", "avatar": "https://cdn.v2ex.com/avatar/e369/a6ec/398849_large.png?m=1762532040" }, "url": "t/1171325", "title": ".net framework \u9879\u76ee\u65b0\u6837\u5f0f \u6570\u636e\u5e93\u8fc1\u79fb\u62a5\u9519", "id": "t/1171325", "date_published": "2025-11-07T16:17:31+00:00", "content_html": "wpf \u7a0b\u5e8f \uff0c
\u6846\u67b6\u4f7f\u7528\u7684\u662f.net framework,csproj \u6539\u6210\u4e86.net \u65b0\u6837\u5f0f\uff08 SDK \u6837\u5f0f\uff09\uff0c\u5728\u4f7f\u7528 EntityFramework \u6570\u636e\u5e93\u8fc1\u79fb Update-Database \u2013Verbose \u547d\u4ee4\u7684\u65f6\u5019\u62a5\u9519\u3002\u662f\u6211\u4f7f\u7528\u7684\u4e0d\u5bf9\u4e48\uff1f\u5927\u5927\u4eec\u80fd\u7834\u4e48\uff1f

\u4f7f\u7528\u539f\u6709\u6837\u5f0f\u4e0d\u62a5\u9519\uff0c\u6b63\u5e38\u80fd\u8fc1\u79fb\u3002

\u4e0b\u9762\u662f\u62a5\u9519\u622a\u56fe\u3002

https://youke1.picui.cn/s1/2025/11/08/690e1a88d6083.png" }, { "author": { "url": "member/cnbatch", "name": "cnbatch", "avatar": "https://cdn.v2ex.com/gravatar/7eb06cdf719fb364a1dfbbaefc4f9d36?s=73&d=retro" }, "url": "t/1158803", "title": "\u77e5\u4e4e\u7f51\u53cb\uff1a\u201cVS2026 \u8fd8\u662f\u8dd1\u5728 .NET Framework 4.8 \u4e0a\uff0c\u770b\u6765 .NET LTS \u53ea\u6709\u4e09\u5e74\u7684\u95ee\u9898\u8fd8\u771f\u628a\u5fae\u8f6f\u81ea\u5df1\u7684\u8116\u5b50\u5361\u4f4f\u4e86\u201d", "id": "t/1158803", "date_published": "2025-09-12T07:14:33+00:00", "content_html": "

\u8fd9\u6bb5\u8bf4\u6cd5\u6765\u81ea\u4e8e\u77e5\u4e4e\u63d0\u95ee \u5982\u4f55\u8bc4\u4ef7 Visual Studio 2026 \uff1f \u4e0b\u65b9\u7f51\u53cb\u7684\u5176\u4e2d\u4e00\u4e2a\u56de\u7b54\uff1a
\nhttps://www.zhihu.com/question/1949061195031118812/answer/1949130568806670437

\n

\u6211\u8fd8\u6ca1\u5b89\u88c5 VS2026 \uff0c\u7b49\u5230\u6b63\u5f0f\u7248\u63a8\u51fa\u4e86\u518d\u8bf4

\n

\u4e0d\u8fc7 .NET LTS \u7684\u65f6\u95f4\u5012\u662f\u5f88\u503c\u5f97\u5173\u6ce8\uff0c\u4e09\u5e74\u662f\u4e0d\u662f\u6709\u70b9\u5c11\uff1f\u6bd5\u7adf\u5fae\u8f6f\u81ea\u5bb6 Visual Studio \u672c\u4f53\u7684\u652f\u6301\u65f6\u95f4\u8fdc\u4e0d\u6b62 3 \u5e74\uff0c\u5982\u679c\u8dd1\u5728 .NET LTS \u90a3\u53ef\u80fd\u771f\u4e0d\u591f\u7528

\n
\n

\u9898\u5916\u8bdd\uff1a\u6bcf\u4e2a IDE \u5382\u5546\uff08\u5c24\u5176\u662f JetBrains\uff09\u90fd\u5e94\u8be5\u53c2\u8003\u4e00\u4e0b\u5fae\u8f6f\u7684\u8fd9\u6b21\u201c\u8425\u9500\u201d\u6280\u5de7\uff0c\u4e13\u95e8\u7559\u4e00\u884c\u5b57\u7ed9\u8001\u677f\u548c\u91c7\u8d2d\u90e8\u95e8\u770b\uff0c\u8ba9\u4ed6\u4eec\u5c3d\u91cf\u4e70\u9ad8\u914d\u7535\u8111\u800c\u4e0d\u662f\u6309\u7167\u6700\u4f4e\u9700\u6c42\u6765\u4e70\uff08\u9664\u975e\u4ed6\u4eec\u94bb\u7ec6\u8282\u627e\u5230\u771f\u5b9e\u914d\u7f6e\u9700\u6c42\u7684\u7f51\u9875\uff09

\n" }, { "author": { "url": "member/StoneHuLu", "name": "StoneHuLu", "avatar": "https://cdn.v2ex.com/avatar/ae6d/bbc5/621091_large.png?m=1763986111" }, "url": "t/1155769", "date_modified": "2025-08-29T10:48:58+00:00", "content_html": "\u524d\u540e\u7aef\u90fd\u6709\uff0c\u524d\u7aef\u7528 vue3 \u7684\u90a3\u79cd\uff0c\u6700\u597d\u652f\u6301\u54cd\u5e94\u5f0f\u5e03\u5c40\u624b\u673a\u4e0a\u4e5f\u80fd\u51d1\u5408\u7528\u3002
\u7136\u540e\u589e\u5220\u6539\u67e5\u5217\u8868\u9875\u53ef\u4ee5\u5feb\u901f\u6839\u636e\u6570\u636e\u5e93\u8868\u5b57\u6bb5\u751f\u6210\u7684\u3002

\u6211\u4ee5\u524d\u5728\u4e92\u8054\u7f51\u5199.net \u5fae\u670d\u52a1\u7684\uff0c\u53bb\u5e74\u5165\u804c\u670b\u53cb\u7684\u516c\u53f8\u56de\u4f20\u7edf\u884c\u4e1a\uff0c\u8fd9\u8fb9\u5f53\u65f6\u6280\u672f\u76cf\u8fd8\u662f java \uff0c\u5199\u4e86\u4e00\u5e74\u591a\u8d8a\u5199\u8d8a\u70e6\uff0c\u5c31\u611f\u89c9\u548c java \u7ed3\u4e86\u5a5a\u4f46\u662f\u5fc3\u91cc\u7684\u767d\u6708\u5149\u8fd8\u662f\u5f53\u5e74\u90a3\u4e2a.Net \uff0c\u73b0\u5728\u516c\u53f8\u6280\u672f\u76cf\u6211\u53ef\u4ee5\u4e00\u8a00\u5802\u4e86\uff0c\u60f3\u7740\u5e72\u8106\u5207\u56de.net \u7b97\u4e86\uff0c\u8d77\u7801\u5199\u7740\u8212\u670d\uff0c\u4f46\u597d\u591a\u5e74\u4e0d\u7528.net \u5199\u540e\u53f0\u4e86\uff0c\u60f3\u95ee\u4e0b\u6709\u6ca1\u6709\u6bd4\u8f83\u6210\u719f\u53ef\u9760\u7684\u540e\u53f0\u6846\u67b6\u5f00\u7bb1\u5373\u7528\u7684\uff0c\u60f3\u7740\u628a\u73b0\u5728\u7684\u82e5\u4f9d\u540e\u53f0\u9010\u6b65\u8fed\u4ee3\u56de.Net", "date_published": "2025-08-29T05:49:39+00:00", "title": ".Net \u6709\u6ca1\u6709\u7c7b\u4f3c\u82e5\u4f9d\u8fd9\u79cd\u540e\u53f0\u6846\u67b6\uff1f", "id": "t/1155769" }, { "author": { "url": "member/rrubick", "name": "rrubick", "avatar": "https://cdn.v2ex.com/avatar/9bee/a327/102175_large.png?m=1774518297" }, "url": "t/1154926", "title": "\u8bf7\u6559\u4e2a .NET Framework 4.0 \u5347\u7ea7\u4ee5\u8fd0\u884c\u5728 arm \u4e0a\u7684\u95ee\u9898", "id": "t/1154926", "date_published": "2025-08-26T01:45:03+00:00", "content_html": "

\u6709\u4e00\u4e2a\u8001\u9879\u76ee\uff0c\u662f\u7528 .NET Framework 4.0 \u5f00\u53d1\uff0c\u5728 web \u9875\u9762\u8c03\u7528\u5e76\u8fd0\u884c\u5728 windows \u4e0a\u3002\n\u73b0\u5728\u6709\u4e00\u4e2a\u9700\u6c42\uff1a\u9700\u8981\u8fc1\u79fb\u5230 arm \u4e0a\u8fd0\u884c\u3002

\n

\u6211\u641c\u7d22\u4e86\u4e00\u4e0b\uff0c\u89e3\u51b3\u65b9\u6848\u662f\uff1a

\n
    \n
  1. \u5347\u7ea7\u5230 .NET Framework 4.8.1 \u53ca\u4ee5\u540e\u7248\u672c\uff0c\u539f\u751f\u652f\u6301 arm
  2. \n
  3. \u7528 .NET Core \uff08.NET \u6216\u8005 ASP.NET \uff09 \u91cd\u5199
  4. \n
\n

\u7531\u4e8e\u672c\u4eba\u4ece\u672a\u63a5\u89e6\u6b64\u7c7b\u5f00\u53d1\uff0c\u6240\u4ee5\u6709\u7591\u95ee\u60f3\u8bf7\u6559\u5927\u4f6c\uff1a

\n
    \n
  1. \u4ee5\u4e0a\u54ea\u79cd\u65b9\u6848\u5bf9\u4e8e\u6211\u6765\u8bf4\u662f\u6bd4\u8f83\u7701\u5fc3\u7684
  2. \n
  3. \u6211\u662f\u5426\u5fc5\u987b\u8981\u5728 arm \u67b6\u6784\u7684\u673a\u5668\u4e0a\u5f00\u53d1\uff0c\u6bd4\u5982 MacOS \u3001arm Ubuntu \uff0c\u5982\u679c\u7528\u6811\u8393\u6d3e\u662f\u5426\u53ef\u884c\u3002
  4. \n
\n" }, { "author": { "url": "member/boliang2333", "name": "boliang2333", "avatar": "https://cdn.v2ex.com/gravatar/9cd9c807f6a944fa06527bd9e878de3e?s=73&d=retro" }, "url": "t/1154817", "title": "\u5e94\u5c4a\u751f\u521a\u5165\u804c\uff0c\u505a\u7684\u662f wms+mes+mes \u4e8c\u6b21\u5f00\u53d1\uff0c\u56e0\u4e3a\u6ca1\u5b66\u8fc7.net+c#\uff0c\u73b0\u5728\u63a5\u53e3\u4ee3\u7801\u5168\u9760 ai \u5199\u600e\u4e48\u529e", "id": "t/1154817", "date_published": "2025-08-25T08:55:12+00:00", "content_html": "\u521a\u5165\u804c\u5c31\u662f\u719f\u6089\u4e86\u4e0b\u5382\u91cc\u7684\u5927\u6982\u4e1a\u52a1\uff0c\u8981\u5bf9\u67d0\u4e9b\u7279\u5b9a\u4e1a\u52a1\u505a\u6570\u636e\u5bf9\u63a5\u7684\u63a5\u53e3\uff0c\u521a\u5f00\u59cb\u8fdb\u6765\u771f\u7684\u662f\u4ee3\u7801\u90fd\u770b\u7684\u61f5\u903c\uff0c\u7cfb\u7edf\u7528\u7684\u662f ddd \u67b6\u6784\uff08\u867d\u7136\u6211\u4e5f\u4e0d\u61c2\uff09\uff0c\u6211\u5c31\u8ba9 ai \u4eff\u7167\u7cfb\u7edf\u4e4b\u524d\u9057\u7559\u4e0b\u6765\u7684\u63a5\u53e3\u5199\uff0c\u5199\u51fa\u6765\u540e\u8ddf ai \u95ee\u6765\u95ee\u53bb\u4e5f\u5927\u6982\u770b\u7684\u61c2\u4e86\uff0c\u5927\u6982\u5c31\u662f
1.control \u91cc\u521b\u5efa api \uff0c\u521b\u5efa model \uff0c\u58f0\u660e\u63a5\u53e3\uff0c\u5b9e\u73b0\u63a5\u53e3\uff0c\u53cd\u5e8f\u5217\u5316\u4f20\u5165\u7684 json \u503c
2.\u5224\u7a7a\uff0c\u7528 linq \u8bed\u53e5\u67e5\u8be2\u672c\u5730\u6570\u636e\u5e93\u91cc\u662f\u5426\u6709\u548c json \u503c\u76f8\u5e94\u7684\u6570\u636e
3.\u6709\u7684\u8bdd\u5b58\u4e0b\u6765\uff0c\u8ba9\u540e\u628a\u5b58\u4e0b\u6765\u7684\u6570\u636e\u5bfc\u5165\u5b9e\u4f53\u7c7b\uff0c\u5728\u7528 context \u52a0\u5230\u672c\u5730\u6570\u636e\u5e93\u91cc

\u4f46\u662f\u8ba9\u6211\u81ea\u5df1\u4ece 0 \u5199\u771f\u7684\u5f88\u56f0\u96be\uff0c\u611f\u89c9\u5565\u90fd\u8054\u7cfb\u4e0d\u8d77\u6765\uff0c\u662f\u5426\u9700\u8981\u7cfb\u7edf\u5b66\u4e60\u4e00\u4e0b\uff0c\u6709\u6ca1\u6709\u5feb\u901f\u638c\u63e1 curd \u7684\u65b9\u6cd5" }, { "author": { "url": "member/lorenzoyang2002", "name": "lorenzoyang2002", "avatar": "https://cdn.v2ex.com/gravatar/ca7fd17b691ea66da0226718ca2aa93f?s=73&d=retro" }, "url": "t/1150815", "title": "[\u5206\u4eab\u521b\u9020] \u5f00\u6e90\u8f7b\u91cf\u7ea7 WinForm \u58c1\u7eb8\u5207\u6362\u5668 Wallpaper Switcher (C# / .NET 9)", "id": "t/1150815", "date_published": "2025-08-07T12:43:06+00:00", "content_html": "

\u5927\u5bb6\u597d\uff01

\n

\u4f5c\u4e3a\u4e00\u4e2a C# \u65b0\u624b\uff0c\u5b8c\u6210\u4e86\u6211\u7684\u7b2c\u4e00\u4e2a\u771f\u6b63\u6709\u7528\u7684\u4e2a\u4eba\u9879\u76ee\uff1aWallpaper Switcher \uff08\u58c1\u7eb8\u5207\u6362\u5668\uff09\uff0c\u5e76\u5df2\u5f00\u6e90\u3002

\n\n

\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a\n\u4e00\u4e2a\u57fa\u4e8e WinForms \u5f00\u53d1\u7684\u8f7b\u91cf\u7ea7\u5de5\u5177\uff0c\u4e13\u6ce8\u4e8e\u5feb\u901f\u3001\u65b9\u4fbf\u5730\u7ba1\u7406\u548c\u5207\u6362\u9759\u6001\u58c1\u7eb8\u3002\u652f\u6301 Windows 8/10/11 (.NET 9)\u3002

\n

\u6838\u5fc3\u75db\u70b9 & \u4e3a\u4ec0\u4e48\u505a\u8fd9\u4e2a\uff1f

\n\n

\u4e3b\u8981\u529f\u80fd\u4eae\u70b9\uff1a

\n
    \n
  1. \u6587\u4ef6\u5939\u7ba1\u7406\uff1a\u8f7b\u677e\u6dfb\u52a0/\u5220\u9664/\u5207\u6362\u58c1\u7eb8\u6e90\u6587\u4ef6\u5939\u3002
  2. \n
  3. \u4e00\u952e\u5207\u6362\uff1a\u6309\u94ae\u6216\u70ed\u952e\u7acb\u5373\u5207\u6362\u58c1\u7eb8/\u6587\u4ef6\u5939\u3002
  4. \n
  5. \u5168\u5c40\u70ed\u952e\uff1a\u540e\u53f0\u8fd0\u884c\uff0c\u652f\u6301\u81ea\u5b9a\u4e49\u70ed\u952e\uff08\u4ec5\u8fd0\u884c\u65f6\u6709\u6548\uff09\u3002
  6. \n
  7. \u7cfb\u7edf\u6258\u76d8\u5e38\u9a7b\uff1a\u5173\u95ed\u5373\u6700\u5c0f\u5316\u5230\u6258\u76d8\uff0c\u652f\u6301\u70ed\u952e\u5fc5\u9700\u3002
  8. \n
  9. \u5f00\u673a\u81ea\u542f\u3002
  10. \n
  11. \n\u4e24\u79cd\u5207\u6362\u6a21\u5f0f\uff1a\n
  12. \n
  13. \u7b80\u6d01\u8bbe\u7f6e\u754c\u9762\u3002
  14. \n
\n

\u6280\u672f\u9009\u578b\u4e0e\u5f00\u53d1\u4eae\u70b9\uff1a

\n\n

\u83b7\u53d6\u4e0e\u4f7f\u7528\uff1a

\n\n

\u671f\u5f85\u4f60\u7684\u53cd\u9988\uff01\n\u4f5c\u4e3a\u7b2c\u4e00\u4e2a\u5b8c\u6574\u7684 C# \u5b9e\u7528\u9879\u76ee\uff0c\u6df1\u77e5\u4ee3\u7801\u548c\u8bbe\u8ba1\u5fc5\u6709\u4e0d\u8db3\u3002\u975e\u5e38\u6b22\u8fce\uff1a

\n\n

\u8bf7\u5728 GitHub Issues/PR \u6216 \u672c\u5e16\u56de\u590d \u4e2d\u63d0\u51fa\uff01\u4f60\u7684\u53cd\u9988\u662f\u5b9d\u8d35\u7684\u5b66\u4e60\u673a\u4f1a\u3002

\n

\u5e0c\u671b\u8fd9\u4e2a\u5c0f\u5de5\u5177\u4e5f\u80fd\u4e3a\u4f60\u5e26\u6765\u4fbf\u5229\uff01

\n

\uff08\u6587\u7ae0\u7528 Deepseek \u8fdb\u884c\u4e86\u4f18\u5316\uff0c\u672c\u4eba\u6587\u91c7\u4e0d\u597d\uff0c\u5185\u5bb9\u662f\u81ea\u5df1\u5199\u7684\u53ea\u4e0d\u8fc7\u8ba9 AI \u6da6\u8272\u4e86\u4e00\u4e0b\uff0c\u89c1\u8c05\uff09

\n" }, { "author": { "url": "member/Need4more", "name": "Need4more", "avatar": "https://cdn.v2ex.com/avatar/19ce/f31a/305835_large.png?m=1762498606" }, "url": "t/1147221", "date_modified": "2025-07-23T11:22:01+00:00", "content_html": "

dotnet 10 \u652f\u6301\u76f4\u63a5\u8fd0\u884c cs \u6e90\u6587\u4ef6

\n

\u5f15\u7528\u4e09\u65b9\u5305

\n
#:package Humanizer@2.14.1\n\nusing Humanizer;\n\nvar dotNet9Released = DateTimeOffset.Parse(\"2024-12-03\");\nvar since = DateTimeOffset.Now - dotNet9Released;\n\nConsole.WriteLine($\"It has been {since.Humanize()} since .NET 9 was released.\");\n
\n

linux shebang

\n
#!/usr/bin/dotnet run\nConsole.WriteLine(\"Hello from a C# script!\");\n
\n
chmod +x app.cs\n./app.cs\n
\n

https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-app

\n

v \u7ad9\u7684 dotnet \u8282\u70b9\u597d\u51b7\u6e05~~~

\n", "date_published": "2025-07-23T11:19:02+00:00", "title": "csharp \u8fd9\u56de\u771f\u6210\u4e86\u811a\u672c\u8bed\u8a00\uff1a dotnet run app.cs", "id": "t/1147221" }, { "author": { "url": "member/niubiman", "name": "niubiman", "avatar": "https://cdn.v2ex.com/avatar/c9e5/c651/312505_large.png?m=1721460904" }, "url": "t/1139918", "date_modified": "2025-06-20T06:35:46+00:00", "content_html": "\u9879\u76ee\u5730\u5740\uff1a https://github.com/choby/ETLBox.ClickHouse \uff0c\u9ebb\u70e6\u8def\u8fc7\u7684\u5144\u5f1f\u4eec\u70b9\u4e2a star
\u9ed8\u8ba4\u652f\u6301.net 6,8,9 \uff0c\u5982\u679c\u9700\u8981\u652f\u6301\u5176\u4ed6\u7248\u672c\u53ef\u4ee5\u81ea\u884c\u5c1d\u8bd5\u7f16\u8bd1
\u4f7f\u7528\u8bf4\u660e\u5df2\u7ecf\u5728 md \u4e2d\u5199\u4e86\uff0c \u7531\u4e8e ETLBox \u5b98\u65b9\u5e76\u6ca1\u6709\u63d0\u4f9b clickhouse \u7684\u652f\u6301\uff0c\u6240\u4ee5\u672c\u7ec4\u4ef6\u4e3b\u8981\u662f\u9488\u5bf9\u4f7f\u7528 ETLBox \u5e76\u4e14\u4f7f\u7528 clickhouse \u505a\u6570\u4ed3\u7684\u9879\u76ee\u6709\u5e2e\u52a9\uff0c\u8fd9\u90e8\u5206\u529f\u80fd\u5728\u672c\u516c\u53f8\u751f\u4ea7\u9879\u76ee\u5df2\u7ecf\u5728\u6b63\u5f0f\u4f7f\u7528\uff0c\u7a33\u5b9a\u53ef\u9760", "date_published": "2025-06-20T06:32:18+00:00", "title": "\u5c0f\u5f1f\u5199\u4e86\u4e00\u4e2a ETLBox \u5199\u5165\u6570\u636e\u5230 ClickHouse \u7684\u7ec4\u4ef6\uff0c \u9700\u8981\u7528\u5230\u7684\u5144\u5f1f\u4eec\u53ef\u4ee5\u770b\u770b", "id": "t/1139918" }, { "author": { "url": "member/AndrewHenry", "name": "AndrewHenry", "avatar": "https://cdn.v2ex.com/avatar/4910/cb40/621873_large.png?m=1748669696" }, "url": "t/1125132", "date_modified": "2025-04-15T00:37:59+00:00", "content_html": "\u7528\u7684 RiderIDE \u6c42\u5927\u4f6c\u770b\u770b\uff1b
# ~~ C# .NET (.NET Core / .NET 5+) .gitignore \u6587\u4ef6 ~~
# \u6b64\u6587\u4ef6\u65e8\u5728\u8986\u76d6 .NET 9 \u53ca\u76f8\u5173\u5de5\u5177\u94fe\u751f\u6210\u7684\u5927\u591a\u6570\u4e34\u65f6\u6587\u4ef6\u548c\u672c\u5730\u914d\u7f6e\u3002
# \u9002\u7528\u4e8e Visual Studio, VS Code, JetBrains Rider \u7b49\u73af\u5883\u3002

# \u64cd\u4f5c\u7cfb\u7edf\u751f\u6210\u7684\u6587\u4ef6
# -------------------------------------------------------------------
.DS_Store # macOS
Thumbs.db # Windows Thumbs cache
ehthumbs.db # Windows Thumbs cache
Desktop.ini # Windows Folder view settings

# IDE \u548c\u7f16\u8f91\u5668\u7279\u5b9a\u7684\u6587\u4ef6/\u6587\u4ef6\u5939
# -------------------------------------------------------------------

# Visual Studio
.vs/ # Visual Studio \u89e3\u51b3\u65b9\u6848\u7f13\u5b58\u548c\u7528\u6237\u8bbe\u7f6e (\u975e\u5e38\u91cd\u8981)
*.suo # Visual Studio Solution User Options (\u65e7\u683c\u5f0f)
*.user # Visual Studio Project User Options
*.vcxproj.user # C++ Project User Options (\u5982\u679c\u6df7\u5408\u4f7f\u7528)
*.*proj.user # \u4efb\u4f55\u9879\u76ee\u7684\u7528\u6237\u9009\u9879

# Visual Studio Code
.vscode/ # VS Code \u5de5\u4f5c\u533a\u8bbe\u7f6e\u3002
# \u6ce8\u610f\uff1a\u6709\u65f6 launch.json \u6216 tasks.json \u53ef\u80fd\u5e0c\u671b\u5171\u4eab\uff0c
# \u5982\u679c\u662f\u8fd9\u6837\uff0c\u53ef\u4ee5\u53d6\u6d88\u5ffd\u7565\u7279\u5b9a\u6587\u4ef6\uff1a
# !.vscode/launch.json
# !.vscode/tasks.json
# !.vscode/settings.json (\u5982\u679c\u60f3\u5171\u4eab\u67d0\u4e9b\u5de5\u4f5c\u533a\u8bbe\u7f6e)

# JetBrains Rider
.idea/ # Rider \u9879\u76ee/\u89e3\u51b3\u65b9\u6848\u8bbe\u7f6e\u548c\u7f13\u5b58
*.sln.iml # Rider/IntelliJ \u751f\u6210\u7684\u6a21\u5757\u6587\u4ef6

# \u7f16\u8bd1\u548c\u6784\u5efa\u8f93\u51fa
# -------------------------------------------------------------------
bin/ # \u4e3b\u8981\u7f16\u8bd1\u8f93\u51fa\u76ee\u5f55
obj/ # \u4e2d\u95f4\u7f16\u8bd1\u6587\u4ef6\u76ee\u5f55
**/bin/ # \u9012\u5f52\u5339\u914d\u6240\u6709 bin \u76ee\u5f55
**/obj/ # \u9012\u5f52\u5339\u914d\u6240\u6709 obj \u76ee\u5f55
**/Release/ # \u663e\u5f0f\u5ffd\u7565 Release \u6784\u5efa\u8f93\u51fa (\u901a\u5e38\u5df2\u5728 bin/ \u4e2d)
**/Debug/ # \u663e\u5f0f\u5ffd\u7565 Debug \u6784\u5efa\u8f93\u51fa (\u901a\u5e38\u5df2\u5728 bin/ \u4e2d)
build/ # \u6709\u4e9b\u6784\u5efa\u811a\u672c\u4f7f\u7528 'build' \u4f5c\u4e3a\u8f93\u51fa
artifacts/ # .NET SDK \u98ce\u683c\u9879\u76ee\u6709\u65f6\u4f7f\u7528\u7684\u53d1\u5e03/\u6253\u5305\u8f93\u51fa\u76ee\u5f55
publish/ # `dotnet publish` \u7684\u9ed8\u8ba4\u8f93\u51fa\u76ee\u5f55
**/Generated/ # \u6709\u4e9b\u4ee3\u7801\u751f\u6210\u5668\u53ef\u80fd\u8f93\u51fa\u5230\u8fd9\u91cc

# NuGet \u5305\u548c\u4f9d\u8d56\u9879\u7f13\u5b58
# -------------------------------------------------------------------
packages/ # \u65e7\u7248 NuGet \u5305\u6587\u4ef6\u5939 (packages.config)
*.nupkg # NuGet \u5305\u6587\u4ef6
*.snupkg # NuGet \u7b26\u53f7\u5305\u6587\u4ef6
*.[Pp]ackages.* # \u4f8b\u5982 'project.assets.json' \u5728 obj/ \u4e2d\uff0c\u4f46\u4ee5\u9632\u4e07\u4e00
# \u6ce8\u610f\uff1a\u901a\u5e38\u4e0d\u5ffd\u7565 nuget.config \uff0c\u56e0\u4e3a\u5b83\u5b9a\u4e49\u4e86\u5305\u6e90\u3002

# \u7528\u6237\u7279\u5b9a\u7684\u8fd0\u884c\u65f6\u6587\u4ef6
# -------------------------------------------------------------------
*.pid # \u8fdb\u7a0b ID \u6587\u4ef6
*.lock # \u9501\u6587\u4ef6

# \u65e5\u5fd7\u548c\u4e34\u65f6\u6587\u4ef6
# -------------------------------------------------------------------
*.log # \u65e5\u5fd7\u6587\u4ef6
*.log.* # \u6eda\u52a8\u65e5\u5fd7\u6587\u4ef6
*.tmp # \u4e34\u65f6\u6587\u4ef6
*.bak # \u5907\u4efd\u6587\u4ef6
*.swp # Vim \u4ea4\u6362\u6587\u4ef6
*.DS_Store?* # macOS \u7279\u6b8a\u6587\u4ef6\u53d8\u4f53

# \u6d4b\u8bd5\u7ed3\u679c\u548c\u8986\u76d6\u7387\u62a5\u544a
# -------------------------------------------------------------------
TestResults/ # Visual Studio \u6d4b\u8bd5\u7ed3\u679c\u76ee\u5f55
*.trx # Visual Studio \u6d4b\u8bd5\u7ed3\u679c\u6587\u4ef6
*.coverage # Visual Studio \u4ee3\u7801\u8986\u76d6\u7387\u6587\u4ef6
*.coveragexml # \u4ee3\u7801\u8986\u76d6\u7387 XML \u6587\u4ef6 (\u5982 Cobertura)
**/coverage.cobertura.xml # Cobertura \u683c\u5f0f\u8986\u76d6\u7387\u62a5\u544a
**/lcov.info # lcov \u683c\u5f0f\u8986\u76d6\u7387\u62a5\u544a (\u5e38\u7528\u4e8e\u524d\u7aef/JS \u6d4b\u8bd5)
reportresults/ # \u4e00\u4e9b\u62a5\u544a\u751f\u6210\u5668\u7684\u8f93\u51fa\u76ee\u5f55

# \u8fd0\u884c\u65f6\u914d\u7f6e\u6587\u4ef6\u548c Secrets (\u975e\u5e38\u91cd\u8981)
# -------------------------------------------------------------------
secrets.json # .NET User Secrets \u6587\u4ef6 (\u7edd\u4e0d\u5e94\u63d0\u4ea4)
**/secrets.json # \u786e\u4fdd\u4efb\u4f55\u4f4d\u7f6e\u7684 secrets \u6587\u4ef6\u90fd\u88ab\u5ffd\u7565
appsettings.Development.json # \u5f00\u53d1\u73af\u5883\u7279\u5b9a\u8bbe\u7f6e\uff0c\u53ef\u80fd\u5305\u542b\u672c\u5730\u654f\u611f\u4fe1\u606f\u3002
# \u53d6\u51b3\u4e8e\u56e2\u961f\u7b56\u7565\uff0c\u6709\u65f6\u4f1a\u63d0\u4ea4 *\u6a21\u677f* \u4f46\u975e\u5b9e\u9645\u503c\u3002
# \u63a8\u8350\u7684\u505a\u6cd5\u662f\u4e0d\u8981\u63d0\u4ea4\u5305\u542b\u771f\u5b9e\u5bc6\u7801/\u5bc6\u94a5\u7684\u6b64\u6587\u4ef6\u3002
.env # \u73af\u5883\u53d8\u91cf\u6587\u4ef6\uff0c\u5e38\u7528\u4e8e\u672c\u5730\u5f00\u53d1 secrets

# \u6570\u636e\u5e93\u6587\u4ef6 (\u672c\u5730\u5f00\u53d1\u6570\u636e\u5e93)
# -------------------------------------------------------------------
*.mdf # SQL Server \u6570\u636e\u5e93\u6587\u4ef6
*.ldf # SQL Server \u65e5\u5fd7\u6587\u4ef6
*.sdf # SQL Server Compact Edition \u6570\u636e\u5e93\u6587\u4ef6
*.db # \u901a\u7528\u6570\u636e\u5e93\u6587\u4ef6 (\u5982 SQLite)
*.db3 # SQLite \u5e38\u7528\u6269\u5c55\u540d
*.sqlite # SQLite \u5e38\u7528\u6269\u5c55\u540d
*.sqlite3 # SQLite \u5e38\u7528\u6269\u5c55\u540d

# Web \u5f00\u53d1\u76f8\u5173 (\u5982\u679c\u9002\u7528)
# -------------------------------------------------------------------
node_modules/ # Node.js \u4f9d\u8d56\u9879 (\u5982\u679c\u4f7f\u7528 npm/yarn)
wwwroot/dist/ # \u524d\u7aef\u6784\u5efa\u5de5\u5177\u7684\u8f93\u51fa\u76ee\u5f55 (\u793a\u4f8b)
wwwroot/lib/ # \u901a\u8fc7 LibMan \u6216\u7c7b\u4f3c\u5de5\u5177\u7ba1\u7406\u7684\u5ba2\u6237\u7aef\u5e93 (\u5982\u679c\u4e0d\u60f3\u63d0\u4ea4)

# \u7279\u5b9a\u5de5\u5177/\u5e93\u751f\u6210\u7684\u6587\u4ef6
# -------------------------------------------------------------------
*_i.c # COM Interop \u751f\u6210\u6587\u4ef6
*_p.c # COM Interop \u751f\u6210\u6587\u4ef6
*_h.h # COM Interop \u751f\u6210\u6587\u4ef6
*.ilk # \u589e\u91cf\u94fe\u63a5\u5668\u6587\u4ef6
*.aps # Visual C++ \u6587\u4ef6 (\u5982\u679c\u6df7\u5408\u4f7f\u7528)
*.ncb # Visual C++ \u6587\u4ef6 (\u5982\u679c\u6df7\u5408\u4f7f\u7528)
*.plg # Visual C++ \u6587\u4ef6 (\u5982\u679c\u6df7\u5408\u4f7f\u7528)

# Resharper (\u5982\u679c\u4f7f\u7528)
# -------------------------------------------------------------------
_ReSharper*/ # ReSharper \u7f13\u5b58/\u8bbe\u7f6e
*.[Rr]e[Ss]harper # ReSharper \u6587\u4ef6

# \u8bc1\u4e66\u548c\u5bc6\u94a5\u6587\u4ef6 (\u7edd\u4e0d\u5e94\u63d0\u4ea4)
# -------------------------------------------------------------------
*.pfx # \u4e2a\u4eba\u4fe1\u606f\u4ea4\u6362\u6587\u4ef6 (\u8bc1\u4e66\u548c\u79c1\u94a5)
*.p12 # PKCS#12 \u6587\u4ef6 (\u8bc1\u4e66\u548c\u79c1\u94a5)
*.key # \u79c1\u94a5\u6587\u4ef6

# Docker \u76f8\u5173 (\u5982\u679c\u4f7f\u7528 Docker)
# -------------------------------------------------------------------
docker-compose.override.yml # \u672c\u5730 Docker Compose \u8986\u76d6\u6587\u4ef6
.dockerignore # \u6ce8\u610f\uff1a\u8fd9\u4e0d\u662f gitignore \uff0c\u4f46\u5e38\u4e0e Dockerfile \u653e\u5728\u4e00\u8d77

# Profiler / Memory Dump Files
# -------------------------------------------------------------------
*.psess # Visual Studio Profiler Session
*.vsp # Visual Studio Profiler Report
*.vspx # Visual Studio Profiler Report
*.sap # Visual Studio Profiler File
*.diagsession # Visual Studio Diagnostic Session
*.dmp # Memory dump \u6587\u4ef6

# BenchmarkDotNet (\u5982\u679c\u4f7f\u7528)
# -------------------------------------------------------------------
BenchmarkDotNet.Artifacts/

# ~~ \u6587\u4ef6\u7ed3\u675f ~~", "date_published": "2025-04-13T10:28:17+00:00", "title": "C#.net9wpf \u9879\u76ee\u8fd9\u4efd.gitignore \u89c4\u5219\u53ef\u884c\u5417\uff1f\u8fd8\u6709\u4ec0\u4e48\u53ef\u4ee5\u6dfb\u52a0\u7684\u5417\uff1f", "id": "t/1125132" }, { "author": { "url": "member/Patrick6", "name": "Patrick6", "avatar": "https://cdn.v2ex.com/avatar/93b4/49f4/453567_large.png?m=1739508578" }, "url": "t/1124744", "title": "\u6709\u4eba\u8bd5\u8fc7\u4ece WCF \u8fc1\u79fb\u5230 ASP.NET Core Web API \u5417\uff1f", "id": "t/1124744", "date_published": "2025-04-11T06:21:19+00:00", "content_html": "\u8fd9\u4e2d\u95f4\u4f1a\u6709\u5565\u5947\u5947\u602a\u602a bug \u5417\uff0cwcf \u7684\u5ba2\u6237\u7aef\u5df2\u7ecf\u7528\u597d\u4e45\u4e86\uff0c\u800c\u4e14\u662f\u5305\u542b C/S \uff0cB/S \u67b6\u6784\u6df7\u6742\u4f7f\u7528\u7684" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1121065", "date_modified": "2025-03-25T16:11:33+00:00", "content_html": "\u670d\u52a1\u5668\u662f aws m8g.2xlarge 8 \u6838 32GB \u5185\u5b58
\u6574\u4e2a\u670d\u52a1\u5668\u4e0a\u5c31\u4e00\u4e2a Docker \uff0c\u91cc\u9762\u8fd0\u884c\u8fd9\u4e2a\u670d\u52a1
\u4ee5\u524d .NET 5 \u7684\u90fd\u662f\u79d2\u7f16\u8bd1
\u73b0\u5728\u7ecf\u5e38\u8981\u534a\u4e2a\u5c0f\u65f6\uff0c\u6709\u65f6\u751a\u81f3\u4e94\u516d\u4e2a\u5c0f\u65f6\u7f16\u8bd1\u4e0d\u5b8c
\u6709\u65f6\u5019\u53c8\u80fd 2 \u79d2\u7f16\u8bd1\uff0c\u4e0d\u77e5\u9053\u4e3a\u4ec0\u4e48
`docker system prune -a` \u8fd0\u884c\u4e86\u597d\u51e0\u904d\uff0c\u6ca1\u6548\u679c



\u5f00 Debug \u662f\u56e0\u4e3a\u521a\u624d\u60f3\u8bd5\u8bd5\u662f\u4e0d\u662f Release \u5bfc\u81f4\u7684\u7f16\u8bd1\u7f13\u6162\u624d\u6539\u7684\uff0c\u5e76\u4e0d\u662f\u5bfc\u81f4\u95ee\u9898\u7684\u539f\u56e0", "date_published": "2025-03-25T16:10:17+00:00", "title": "\u9879\u76ee\u4ece.NET5.0 \u5347\u7ea7\u5230 8.0\uff0c\u52a0\u8d77\u6765 1.5 \u4e07\u884c\u4ee3\u7801\uff0c Linux \u4e0b\u7f16\u8bd1\u7ecf\u5e38\u8981\u534a\u4e2a\u5c0f\u65f6\uff0c\u6709\u7684\u65f6\u5019\u53c8\u51e0\u79d2\u949f\u5c31\u80fd\u7f16\u8bd1\u5b8c\uff0c Windows \u4e0b\u4e00\u76f4\u975e\u5e38\u6b63\u5e38\uff0c\u600e\u4e48\u6392\u67e5\uff1f", "id": "t/1121065" }, { "author": { "url": "member/jroger", "name": "jroger", "avatar": "https://cdn.v2ex.com/avatar/5d27/294a/471404_large.png?m=1778218421" }, "url": "t/1118590", "title": "\u5206\u4eab\u4e00\u4e2a\u4f7f\u7528 C#\u5c01\u88c5\u7684 gRPC \u7ec4\u4ef6", "id": "t/1118590", "date_published": "2025-03-15T01:54:06+00:00", "content_html": "

\u5f00\u53d1\u8fd9\u4e2a\u7ec4\u4ef6\u7684\u539f\u7531\uff1a\u6700\u5f00\u59cb\u63a5\u89e6\u7684\u670d\u52a1\u95f4\u901a\u4fe1\u662f\u4f7f\u7528\u7684 WCF\uff0c\u540e\u6765\u4f7f\u7528\u4e86 gRPC \u540e\uff0c\u56e0\u4e3a\u4e0d\u60f3\u5b9a\u4e49 proto \u6587\u4ef6\uff0c\u5c31\u5728\u60f3\u6709\u6ca1\u6709\u529e\u6cd5\u50cf\u7528 WCF \u4e00\u6837\u4f7f\u7528 gRPC\uff0c\u7ecf\u8fc7\u6478\u7d22\u540e\uff0c\u5c31\u6709\u4e86\u73b0\u5728\u8fd9\u4e2a\u7ec4\u4ef6\u3002

\n

\u5982\u679c\u4f60\u4e5f\u6709\u548c\u6211\u7c7b\u4f3c\u7684\u60f3\u6cd5\uff0c\u6b22\u8fce\u8bd5\u7528\u3002

\n

\u5730\u5740\u5728\u8fd9\u91cc

\n" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1113916", "date_modified": "2025-02-24T10:31:48+00:00", "content_html": "Avalonia \u4e00\u4e2a\u5927\u95ee\u9898\u662f Breaking Changes \u8fc7\u591a\uff0c\u5b98\u7f51\u90fd\u80fd\u6709\u4e00\u5806 bug /t/1015029
\u6587\u672c\u8f93\u5165\u6846\u548c Flutter \u4e00\u6837\u7528\u8d77\u6765\u5f88\u4e0d Native \uff0c\u6587\u672c\u591a\u7684\u65f6\u5019\u7ecf\u5e38\u4f1a\u53d8\u900f\u660e\uff0c\u6709\u4e00\u4e9b\u83ab\u540d\u5176\u5999\u7684\u95ee\u9898
AI \u51e0\u4e4e\u5199\u4e0d\u4e86\uff0c\u5168\u90fd\u5728\u80e1\u8a00\u4e71\u8bed /t/1110486", "date_published": "2025-02-24T10:29:32+00:00", "title": "C# .NET \u73b0\u5728\u76f8\u5bf9\u6210\u719f\u7684\u8de8\u5e73\u53f0 UI \u6846\u67b6\u662f\u5426\u8fd8\u662f\u53ea\u6709 Avalonia\uff1f MAUI \u600e\u4e48\u6837\u4e86", "id": "t/1113916" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1104824", "date_modified": "2025-01-13T13:56:56+00:00", "content_html": "

\u867d\u7136\u540e\u53f0\u6162\u4e0d\u662f\u4e0d\u80fd\u7528\uff0c\u4f46\u662f\u9500\u552e\u4e00\u76f4\u5728\u53cd\u6620\u64cd\u4f5c\u5f88\u6162\u8ba9\u4f18\u5316\u3002\u9500\u552e\u540e\u53f0\u65f6\u95f4\u9009\u62e9\u5668\u7c92\u5ea6\u53ea\u7cbe\u786e\u5230\u5929\uff0c\u4e0d\u77e5\u9053\u8fd9\u4e2a\u5730\u65b9\u662f\u4e0d\u662f\u53ef\u4ee5\u505a\u4ec0\u4e48\u6548\u679c\u6bd4\u8f83\u597d\u7684\u4f18\u5316\u3002

\n

\u6b63\u5e38\u60c5\u51b5\u4e0b\u65e5\u8ba2\u5355\u5728\u4e94\u767e\u4e07\u5de6\u53f3\u3002\u8fd9\u4e2a\u9875\u9762\u9700\u8981\u663e\u793a\u6bcf\u4e2a SKU \u5728\u4e0d\u540c\u9636\u6bb5\uff08\u72b6\u6001\uff09\u7684\u8ba2\u5355\u7684\u6570\u91cf\u3002\u6709\u8003\u8651\u8fc7\u7528 Redis \u4f46\u662f\u6211\u4eec\u7684 Redis \u662f\u5355\u673a\u7684\u53ea\u7528\u6765\u7f13\u5b58\uff0c\u7ecf\u5e38 flushall \u3002\u518d\u5355\u72ec\u52a0\u4e00\u53f0 Redis \u89c9\u5f97\u4e0d\u5212\u7b97

\n
return Ok(dbContext.Orders.Where(x => x.CreatedAt >= DateTimeOffset.FromUnixTimeMilliseconds(queryForm.StartDate) &&\n x.CreatedAt <= DateTimeOffset.FromUnixTimeMilliseconds(queryForm.EndDate))\n .Include(x => x.Sku).Where(x => x.Sku != null)\n .GroupBy(o => o.SkuId)\n .Select(g => new\n {\n SkuId = g.Key,\n SkuName = g.Select(o => o.Sku.TitleEng).FirstOrDefault(),\n Delivering = g.Count(o => o.Status == (int)OrderStatusEnum.Delivering),\n Cancelled = g.Count(o => o.Status == (int)OrderStatusEnum.Cancelled),\n InProcess = g.Count(o => o.Status == (int)OrderStatusEnum.InProcess),\n InReview = g.Count(o => o.ReviewTasks.Any(t => t.Pending && t.Result == false)),\n Total = g.Count()\n })\n .ToList());\n
\n

\u80fd\u60f3\u5230\u7684\u7d22\u5f15\u90fd\u5df2\u7ecf\u52a0\u4e86

\n
[Index(nameof(Status))]\n[Index(nameof(Input))]\n[Index(nameof(SkuId))]\n[Index(nameof(UserId))]\n[Index(nameof(CreatedAt))]\n[Index(nameof(UpdatedAt))]\n[Index(nameof(OrderTag))]\n[Index(nameof(SendPending))]\n[Index(nameof(OrderSource))]\n[Index(nameof(UserId), nameof(SkuId), nameof(FromMobileApp))]\n[Index(nameof(UserId), nameof(Status))]\n[Index(nameof(SkuId), nameof(Status))]\n[Index(nameof(Status), nameof(RiskyScore))]\n[Index(nameof(UserId), nameof(Input))]\n[Index(nameof(UserId), nameof(InputTailing))]\npublic class Order : BaseEntity\n{ ... }\n
\n", "date_published": "2025-01-13T13:47:06+00:00", "title": "ASP .NET Core + EF Core + MySQL \u8fd9\u4e2a\u7edf\u8ba1\u67e5\u8be2\u5728 3 \u4ebf\u6761\u8bb0\u5f55\u7684\u8868\u4e0b\u6bcf\u6b21\u67e5\u8be2\u90fd\u9700\u8981 2~4 \u5206\u949f\uff0c\u4f18\u5316\u7684\u529e\u6cd5\u53ea\u6709\u7528\u89e6\u53d1\u5668\u6216\u662f\u540e\u53f0\u6bcf\u5c0f\u65f6\u5b9a\u671f\u7edf\u8ba1\u5417\uff1f", "id": "t/1104824" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1100049", "title": "Avalonia UI \u66f4\u65b0\u5230 11 \u4ee5\u540e\u542f\u52a8\u6162\u6709\u529e\u6cd5\u4f18\u5316\u5417\uff1f", "id": "t/1100049", "date_published": "2024-12-24T19:16:28+00:00", "content_html": "

\u672c\u6765\u5c31\u4e0d\u662f\u5f88\u5feb\uff0c\u66f4\u65b0\u5230 11 \u540e\u7b80\u76f4\u548c Flutter \u4e00\u6837\u6162\u4e86\u3002\u4e3a\u4e86\u6392\u9664\u6211\u5199\u7684\u4ee3\u7801\u7684\u95ee\u9898\uff0c\u6211\u5efa\u4e86\u4e00\u4e2a\u7a7a\u9879\u76ee\uff0c\u542f\u52a8\u4e5f\u8981 4 \u79d2\uff0c\u5728 macOS \u4e0a\u662f\u5f39\u8df3 3 \u6b21\u3002

\n" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1099682", "title": "EF Core \u8fd9\u7c7b\u8f83\u91cd\u7684 ORM \u6846\u67b6\u9002\u5408\u585e\u8fdb\u5ba2\u6237\u7aef\u5417\uff1f\u5982\u679c\u662f\u7528\u4e8e\u672c\u5730 SQLite \u6570\u636e\u5e93\uff0c\u6709\u6ca1\u6709\u66f4\u597d\u7684\u9009\u62e9\uff1f", "id": "t/1099682", "date_published": "2024-12-23T08:03:23+00:00", "content_html": "" }, { "author": { "url": "member/allplay", "name": "allplay", "avatar": "https://cdn.v2ex.com/gravatar/a1fea407eee1f0a1da3a96a9915d66d0?s=73&d=retro" }, "url": "t/1095210", "title": "Windows \u666e\u901a\u7528\u6237\uff0c\u53ef\u5426\u7981\u7528\u7cfb\u7edf\u81ea\u5e26.net 3.5/4.8\uff0c\u4ec5\u5b89\u88c5\u6700\u65b0.net 8/9\uff1f", "id": "t/1095210", "date_published": "2024-12-05T05:03:57+00:00", "content_html": "\u5728 Windows Update \u4e2d\uff0c\u8fd9\u4e24\u5957\u90fd\u4f1a\u6709\u66f4\u65b0\u3002
\u53ef\u5426\u5728\u542f\u7528\u6216\u5173\u95ed Windows \u529f\u80fd\u4e2d\u7981\u7528\u81ea\u5e26\u7684.net framework 3.5 4.8 \u3002\u7136\u540e\u4ece\u5fae\u8f6f\u5b98\u65b9\u4e0b\u8f7d\u6700\u65b0\u7684.net 8/9 \u8fd0\u884c\u65f6\u3002
\u8fd9\u6837\u51cf\u5c11\u5197\u4f59\u3001bug \u3002" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1091813", "date_modified": "2024-11-22T07:05:05+00:00", "content_html": "
using System;\nusing System.Reactive.Linq;\nusing System.Reactive.Subjects;\n\npublic class BasicMessageBus\n{\n private static readonly BasicMessageBus _instance = new();\n public static BasicMessageBus Inst => _instance;\n\n private readonly Subject<object> _messages = new();\n public IObservable<T> Subscribe<T>() => _messages.OfType<T>();\n public void Send(object message) => _messages.OnNext(message);\n}\n
\n", "date_published": "2024-11-22T07:01:34+00:00", "title": "\u540c\u4e00\u7a0b\u5e8f\u5185\u7684\u6d88\u606f\u961f\u5217\uff0c\u8fd9\u6837\u7528\u5355\u4f8b\u7684\u7b80\u6613\u5b9e\u73b0\u6bd4 redis \u7684 Pub-Sub \u6548\u7387\u9ad8\u5417\uff1f\u5982\u679c\u4e0d\u5b9e\u73b0 Unsubscribe\uff0c\u6709\u5185\u5b58\u6cc4\u6f0f\u98ce\u9669\u5417\uff1f", "id": "t/1091813" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1091008", "date_modified": "2024-11-19T19:02:21+00:00", "content_html": "\u4e00\u76f4\u7528\u8001\u7248\u672c Avalonia \uff0c\u6700\u8fd1\u624d\u5f00\u59cb\u7ed9\u65b0\u9879\u76ee\u4e0a 11 \u3002Avalonia \u8fd9\u4e2a\u6846\u67b6\u5411\u4e0b\u517c\u5bb9\u4e00\u76f4\u505a\u7684\u633a\u5dee\u7684\uff0c\u6bcf\u6b21\u66f4\u65b0\u5927\u7248\u672c\u53f7\u90fd\u6539\u4e00\u4e9b\u8bed\u6cd5\u3002\u7279\u522b\u662f\u5f00\u59cb\u652f\u6301\u79fb\u52a8\u7aef\u540e breaking changes \u8d85\u7ea7\u591a\uff0c\u4e5f\u7b97\u53ef\u4ee5\u7406\u89e3\u3002

\u7136\u540e\u53d1\u73b0\"{Binding $parent[ItemsControl].DataContext.ParentCommand}\" \u8fd9\u79cd\u5199\u6cd5\u4e0d\u80fd\u7528\u4e86\uff0c\u4f1a\u62a5\u9519 Unable to resolve property or method of name 'ParentCommand' on type 'System.Object'\u3002GPT-4 \u548c Claude \u90fd\u5b8c\u5168\u4e0d\u61c2\u8fd9\u4e2a\u53d8\u5316\uff0c\u4e00\u76f4\u6307\u5bfc\u6211\u6392\u67e5\u522b\u7684\u4e1c\u897f\uff0c\u6298\u817e\u4e86\u597d\u4e45\u4e5f\u6ca1\u89e3\u51b3\u3002

\u53ea\u597d\u53bb Discord \u4e0a\u95ee\u7fa4\u53cb\uff0c\u7fa4\u53cb\u8bf4\u662f 11 \u65b0\u52a0\u7684 CompileBindings \u5bfc\u81f4\u7684\uff0c\u9ed8\u8ba4\u5f00\u542f\uff0c\u5fc5\u987b\u628a CompileBindings \u5173\u6389\uff0c\u6216\u8005\u6bcf\u6b21\u8c03\u7528 Parent Command \u90fd\u5199 Command=\"{Binding $parent[ItemsControl].((vm:ParentViewModel)DataContext).ParentCommand}\" \u8fd9\u4e48\u957f\u4e00\u5927\u5768\u3002\uff08\u4e0d\u5199 .NET \u7684 v \u53cb\u53ef\u4ee5\u7406\u89e3\u4e3a\u6bcf\u6b21\u4ece for \u5faa\u73af\u91cc call \u4e00\u4e2a\u5faa\u73af\u5916\u9762\u7684\u51fd\u6570\u8981\u5199 89 \u4e2a\u5b57\u7b26\uff09\u4ece list \u8c03\u7528\u6bcd vm \u7684 Command \u53ef\u662f\u4e00\u4e2a\u975e\u5e38\u5e38\u89c1\u7684\u64cd\u4f5c\uff0c\u672c\u6765\u5199 $parent[ItemsControl].DataContext.ParentCommand \u5c31\u5df2\u7ecf\u5f88\u957f\u5f88\u96be\u770b\uff0c\u73b0\u5728\u8fd8\u8981\u518d\u52a0\u4e00\u6bb5\u3002\u4e3a\u4ec0\u4e48\u5c31\u4e0d\u89e3\u51b3\u4e00\u4e0b\u5462\uff1f", "date_published": "2024-11-19T18:56:13+00:00", "title": "Avalonia 11 \u540e\u8981\u4ece ItemsControl \u8c03\u7528\u6bcd UserControl \u7684\u547d\u4ee4\u8fd9\u79cd\u5e38\u89c1\u64cd\u4f5c\u5c31\u5fc5\u987b\u6bcf\u6b21\u90fd\u5199\u8fd9\u4e48\u957f\u4e00\u5768\u4e1c\u897f\u5417\uff1f", "id": "t/1091008" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1082187", "title": ".NET build \u5230 wasm \u540e\u600e\u4e48\u770b\u9519\u8bef\u4ee3\u7801\u5728\u54ea\u4e2a .cs \u6587\u4ef6\u7684\u54ea\u4e2a\u4f4d\u7f6e\uff1f DevTools \u548c\u90a3\u4e2a Debug URL \u91cc\u90fd\u53ea\u80fd\u770b\u5230 e.Message", "id": "t/1082187", "date_published": "2024-10-21T06:27:42+00:00", "content_html": "

\"\"

\n

\u5728\u8c03\u8bd5\u6a21\u5f0f\u4e0b\u4e5f\u53ea\u6709\u8fd9\u4e00\u70b9\u9519\u8bef\u4fe1\u606f\uff0c\u95ee\u9898\u51fa\u5728\u54ea\u884c\u4ee3\u7801\u548c\u9519\u8bef\u5806\u6808\u90fd\u6ca1\u6709\u6253\u5370\uff0cIDE \u91cc\u4e5f\u4e0d\u80fd\u50cf\u684c\u9762\u5e94\u7528\u4e00\u6837\u81ea\u52a8\u6682\u505c\u4e0b\u65ad\u70b9

\n" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1082172", "date_modified": "2024-10-21T06:00:05+00:00", "content_html": "\u4f1a\u4e0d\u4f1a\u50cf npm \u4e00\u6837\u88c5\u4e2a\u5168\u5c40\u5305\u8981 root \u6743\u9650\uff1f\u76ee\u524d\u6211\u53ea\u53d1\u73b0\u4ee5\u524d\u4e0d\u7528 root \u5b89\u88c5\u7684 workload \u73b0\u5728\u9700\u8981 root \u6743\u9650\u4e86
Homebrew \u793e\u533a\u7ef4\u62a4\u7684\u5b89\u88c5\u811a\u672c\u7ecf\u5e38\u6709\u83ab\u540d\u5176\u5999\u7684\u95ee\u9898\uff0c\u6bd4\u8d77\u793e\u533a\u6211\u8fd8\u662f\u66f4\u613f\u610f\u76f8\u4fe1\u5927\u7684\u5546\u4e1a\u516c\u53f8", "date_published": "2024-10-21T05:56:18+00:00", "title": "macOS \u5355\u7528\u6237\u73af\u5883 dotnet \u88c5\u5728 ~/.dotnet/ \u8fd8\u662f /usr/local/share/dotnet/ \u66f4\u597d\uff1f Rider \u9ed8\u8ba4\u662f\u524d\u8005\uff0c\u5b98\u7f51\u4e0b\u8f7d\u7684 .pkg \u9ed8\u8ba4\u662f\u540e\u8005", "id": "t/1082172" }, { "author": { "url": "member/bthulu", "name": "bthulu", "avatar": "https://cdn.v2ex.com/gravatar/c87484c1062f990c6ef9e1a9c27bdc60?s=73&d=retro" }, "url": "t/1078596", "title": "efcore \u4e2d, \u4f7f\u7528 FromSql \u67e5\u8be2\u65f6, \u5982\u4f55\u8bbe\u7f6e where in \u53c2\u6570?", "id": "t/1078596", "date_published": "2024-10-09T08:01:09+00:00", "content_html": "

\u50cf\u4e0b\u9762\u8fd9\u6837, \u662f\u67e5\u4e0d\u51fa\u6765\u7684. \u662f\u6709\u4ec0\u4e48\u7279\u6b8a\u59ff\u52bf\u6211\u4e0d\u4f1a\u7684\u5417? google \u4e86\u534a\u5929\u4e5f\u6ca1\u627e\u51fa\u6765\u600e\u4e48\u4f20\u9012\u96c6\u5408\u53c2\u6570\u8fdb\u53bb.

\n
var ids = new List<string>() { \"A001\", \"B001\" };\nappDbContext.RackTransfers.FromSql($\"select * from RackTransfers where Id IN ({ids})\");\n
\n" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1076054", "date_modified": "2024-09-26T09:09:27+00:00", "content_html": "\u8fd9\u4e00\u5e74\u5728 V \u7ad9\u5173\u4e8e\u8fd9\u4e2a\u95ee\u9898\u5df2\u7ecf\u53d1\u4e86\u597d\u51e0\u4e2a\u8d34\u4e86\uff0c\u4e00\u76f4\u6ca1\u89e3\u51b3 /t/1037900
\u5df2\u7ecf\u4ece ASP.NET Core 5 \u5347\u7ea7\u5230 6 \u4e86\uff0c\u4e4b\u524d\u5347\u8fc7 8 \u5185\u5b58\u6cc4\u9732\u66f4\u4e25\u91cd\u4e86\uff0c\u53c8\u9000\u56de 6
\u6700\u65e9\u52a0\u6bcf 5 \u5206\u949f\u5f3a\u5236 GC \u4e00\u6b21\uff0c\u7f13\u89e3\u4e86\u51e0\u4e2a\u6708\uff0c\u53c8\u5f00\u59cb\u4e24\u5929\u4e00\u5d29
\u7136\u540e\u641e\u4e86\u53cc\u5b9e\u4f8b\u8d1f\u8f7d\u5747\u8861\uff0c\u4e24\u53f0\u673a\u5668 4 \u5c0f\u65f6\u91cd\u542f\u4e00\u6b21\uff0c\u91cd\u542f\u65f6\u95f4\u9519\u5f00\uff0c\u7f13\u89e3\u4e86\u51e0\u4e2a\u6708
\u6700\u8fd1\u8bf7\u6c42\u91cf\u7ffb\u4e86\u4e24\u500d\uff0c\u7136\u540e\u53d8\u6210\u4e86\u4e00\u5c0f\u65f6\u4e00\u5d29\uff0c\u8fd9\u4e48\u9891\u7e41\u91cd\u542f\u518d\u63a5\u4e0b\u53bb\u80af\u5b9a\u4f1a\u51fa\u73b0\u91cd\u542f\u4e5f\u89e3\u51b3\u4e0d\u4e86\u95ee\u9898\u7684\u60c5\u51b5\uff0c\u53ea\u597d\u518d\u6765\u6c42\u52a9
\u76ee\u524d\u8bf7\u6c42\u91cf\u662f\u6bcf\u5929 6~9 \u5343\u4e07\uff08\u5ba2\u6237\u7aef\u5927\u91cf\u8f6e\u8be2\u8bf7\u6c42\uff0c\u968f\u786c\u4ef6\u5206\u53d1\u65e0\u6cd5\u66f4\u65b0\uff0c\u5bfc\u81f4\u8bf7\u6c42\u91cf\u6bd4\u8f83\u5927\uff09
\u6309\u7167 https://learn.microsoft.com/zh-cn/dotnet/core/diagnostics/debug-memory-leak \u7684\u6559\u7a0b\uff0c\u8fd0\u884c 10 \u5206\u949f\u540e\u6293\u53d6 dump \u7684 heap statistics \u5982\u4e0b
https://pastebin.com/BnxB8S0R

\u53e6\u5916 analyze \u7684\u65f6\u5019\u6240\u6709\u547d\u4ee4\u90fd\u63d0\u793a ERROR: The GC heap is not in a valid state for traversal. (Use -ignoreGCState to override.) \u52a0\u4e0a -ignoreGCState \u53c8\u4e0d\u8fd4\u56de\u5185\u5bb9\uff0c\u4e0d\u77e5\u9053\u4e3a\u4ec0\u4e48\uff0cstackoverflow \u4e0a\u7684\u51e0\u4e2a\u65b9\u6cd5\u90fd\u65e0\u6548", "date_published": "2024-09-26T09:00:02+00:00", "title": "\u6709\u6ca1\u6709 .NET \u5927\u795e\u5e2e\u5fd9\u770b\u770b\u56f0\u6270\u4e86\u597d\u51e0\u4e2a\u5927\u795e\u4e00\u5e74\u7684\u5185\u5b58\u6cc4\u9732\u95ee\u9898\uff0c\u4f18\u5316\u4e86\u4e00\u5e74\u8d8a\u53d8\u8d8a\u4e25\u91cd\uff0c\u73b0\u5728\u4e00\u5c0f\u65f6\u5d29\u4e00\u6b21", "id": "t/1076054" }, { "author": { "url": "member/lizhien", "name": "lizhien", "avatar": "https://cdn.v2ex.com/gravatar/1b49e29387865313b37ee6a8b7b31cd3?s=73&d=retro" }, "url": "t/1073286", "title": "\u6709\u7528\u8fc7 SQLSugar \u7684\u5417\uff1f\u80fd\u8bf4\u8bf4\u4f53\u9a8c\u5417\uff1f", "id": "t/1073286", "date_published": "2024-09-16T01:00:30+00:00", "content_html": "

.net \u83dc\u9e1f\uff0c\u53ea\u7528\u8fc7 dapper \u548c efcore\n\u770b\u5230\u8fd9\u4e2a orm \uff0c\u5b98\u7f51\u8bf4\u7684\u90a3\u4e48\u725b\u903c\uff0c\u53ef\u4ee5\u8bf4\u662f.net \u6700\u725b\u903c\u7684 orm \u4e86\uff0c\u60f3\u5728\u65b0\u9879\u76ee\u91cc\u8bd5\u8bd5\n\u4f46\u4e0d\u77e5\u9053\u5b9e\u9645\u4f53\u9a8c\u5982\u4f55\uff0c\u771f\u6709\u90a3\u4e48\u597d\u7528\u5417\uff1f\n\u6211\u770b v2 \u90fd\u662f\u8bf4\u7684 efcore \uff0c\u5f88\u5c11\u8bf4 sqlsugar \u7684\n\u6709\u6ca1\u6709\u5927\u4f6c\u80fd\u8bf4\u4e00\u4e0b\u8fd9\u4e2a orm \u5417\uff1f

\n" }, { "author": { "url": "member/maymay5", "name": "maymay5", "avatar": "https://cdn.v2ex.com/avatar/73b4/34c3/651503_large.png?m=1757313575" }, "url": "t/1072092", "title": ".NET \u5927\u725b\u4eec\uff0c\u8fd9\u6b21\u9047\u5230\u4e86\u4e00\u4e2a\u6d89\u53ca\u77e5\u8bc6\u76f2\u533a\u7684 BUG\uff0c\u4e0e Redis \u6709\u5173", "id": "t/1072092", "date_published": "2024-09-11T11:14:49+00:00", "content_html": "\n
fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]\n An unhandled exception has occurred while executing the request.\n StackExchange.Redis.RedisCommandException: Command cannot be issued to a replica: DEL cache_4f4bc6e0-4278-d758-4312-3be96b11d34e\n at StackExchange.Redis.ConnectionMultiplexer.PrepareToPushMessageToBridge[T](Message message, ResultProcessor`1 processor, IResultBox`1 resultBox, ServerEndPoint& server) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 1967\n at StackExchange.Redis.ConnectionMultiplexer.TryPushMessageToBridgeAsync[T](Message message, ResultProcessor`1 processor, IResultBox`1 resultBox, ServerEndPoint& server) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 2013\n at StackExchange.Redis.ConnectionMultiplexer.ExecuteAsyncImpl[T](Message message, ResultProcessor`1 processor, Object state, ServerEndPoint server) in /_/src/StackExchange.Redis/ConnectionMultiplexer.cs:line 2191\n at StackExchange.Redis.RedisBase.ExecuteAsync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) in /_/src/StackExchange.Redis/RedisBase.cs:line 54\n at StackExchange.Redis.RedisDatabase.KeyDeleteAsync(RedisKey key, CommandFlags flags) in /_/src/StackExchange.Redis/RedisDatabase.cs:line 758\n at aibotPro.Service.RedisService.DeleteAsync(String key) in /Users/mayday/Desktop/GitHub/AIBot-Pro/AIBot-Pro/aibotPro/aibotPro/Service/RedisService.cs:line 75\n at aibotPro.Service.UsersService.GenerateCodeImage(String account, String key) in /Users/mayday/Desktop/GitHub/AIBot-Pro/AIBot-Pro/aibotPro/aibotPro/Service/UsersService.cs:line 151\n at aibotPro.Controllers.UsersController.GenerateCodeImage(String key) in /Users/mayday/Desktop/GitHub/AIBot-Pro/AIBot-Pro/aibotPro/aibotPro/Controllers/UsersController.cs:line 388\n at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\n --- End of stack trace from previous location ---\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()\n --- End of stack trace from previous location ---\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)\nfail: Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor[3]\n The view 'Error' was not found. Searched locations: /Views/Home/Error.cshtml, /Views/Shared/Error.cshtml\nfail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[3]\n An exception was thrown attempting to execute the error handler.\n System.InvalidOperationException: The view 'Error' was not found. The following locations were searched:\n /Views/Home/Error.cshtml\n /Views/Shared/Error.cshtml\n at Microsoft.AspNetCore.Mvc.ViewEngines.ViewEngineResult.EnsureSuccessful(IEnumerable`1 originalLocations)\n at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewResultExecutor.ExecuteAsync(ActionContext context, ViewResult result)\n at Microsoft.AspNetCore.Mvc.ViewResult.ExecuteResultAsync(ActionContext context)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()\n --- End of stack trace from previous location ---\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()\n --- End of stack trace from previous location ---\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\n at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.HandleException(HttpContext context, ExceptionDispatchInfo edi)\n\n
\n" }, { "author": { "url": "member/maymay5", "name": "maymay5", "avatar": "https://cdn.v2ex.com/avatar/73b4/34c3/651503_large.png?m=1757313575" }, "url": "t/1066048", "date_modified": "2024-08-19T02:55:10+00:00", "content_html": "

\u7ec8\u7aef\u627e\u4e0d\u5230 SDK

\n

\"\"

\n

Rider \u63d0\u793a.net 8

\n

\"\"

\n", "date_published": "2024-08-19T02:54:50+00:00", "title": "\u6c42\u52a9\u5927\u4f6c\u4eec\uff0c\u5e72\u4e86\u4ef6\u8822\u4e8b\uff0c\u6211\u90fd\u4e0d\u7406\u89e3\u6211\u4e3a\u4ec0\u4e48\u8981\u7528 Rider \u53bb\u88c5 SDK\uff0c\u5bfc\u81f4\u73b0\u5728\u5220\u4e0d\u6389\u4e5f\u627e\u4e0d\u5230\u4e86", "id": "t/1066048" }, { "author": { "url": "member/zhangeric", "name": "zhangeric", "avatar": "https://cdn.v2ex.com/gravatar/a0ff747c4e9c61c2e05b883ba6e83514?s=73&d=retro" }, "url": "t/1058644", "title": "nuget \u670d\u52a1\u5668\u6709\u95ee\u9898\u4e86,\u4e0d\u4f1a\u4e5f\u662f\u90a3\u4e2a CrowdStrike \u51fa\u95ee\u9898\u5bfc\u81f4\u7684\u5427", "id": "t/1058644", "date_published": "2024-07-19T09:19:00+00:00", "content_html": "" }, { "author": { "url": "member/huzhikuizainali", "name": "huzhikuizainali", "avatar": "https://cdn.v2ex.com/avatar/1869/a390/522912_large.png?m=1752498684" }, "url": "t/1050797", "title": "\u4e3a\u4ec0\u4e48\u6211\u5df2\u7ecf\u5728 Visual Studio \u4e2d\u5b89\u88c5\u4e86.Net 8.0\uff0c\u4f46\u662f\u547d\u4ee4\u884c\u663e\u793a\u7684\u7248\u672c\u4ecd\u7136\u662f 6.0.31\uff1f", "id": "t/1050797", "date_published": "2024-06-19T03:05:10+00:00", "content_html": "

\u6211\u5f53\u524d\u7528 Visual Studio \u8fdb\u884c C#\u4ee3\u7801\u8c03\u8bd5\uff0c\u5e0c\u671b\u5b66\u4e60\u4e00\u4e0b\u5355\u5143\u6d4b\u8bd5\u76f8\u5173\u77e5\u8bc6\u3002\u4eca\u5929\u521a\u521a\u5b89\u88c5\u4e86 Visual Studio \uff0c\u5e76\u201c\u5355\u72ec\u201d\u5b89\u88c5\u4e86.Net 8.0 \uff08\u89c1\u4e0b\u65b9\u622a\u56fe\uff09\u3002\u4f46\u662f\u5b89\u88c5\u6210\u529f\u4ee5\u540e\u6211\u8fd0\u884c dotnet --info \u663e\u793a\u7ed3\u679c\u5982\u4e0b\uff1a\n\u53ef\u4ee5\u770b\u5230 Host:Version: 6.0.31\n\u8fd9\u4e0e\u6211\u521a\u521a\u5b89\u88c5\u597d Visual Studio \uff0c\u6ca1\u6709\u5355\u72ec\u5b89\u88c5.Net 8.0 \u65f6\u7684\u60c5\u51b5\u662f\u4e00\u6837\u7684\u3002

\n

\u6211\u4e4b\u524d\u4f7f\u7528 VS code \u65f6\u662f\u5355\u72ec\u4ece\u5fae\u8f6f\u7f51\u7ad9\u4e0a\u4e0b\u8f7d\u5b89\u88c5.Net 8.0 \u3002\u5b89\u88c5\u4ee5\u540e\u8fd0\u884c dotnet --info \uff0cHost:Version: \u5f53\u65f6\u663e\u793a\u7684\u662f 8.0 \u3002 \u8bf7\u95ee\u6211\u5982\u4f55\u624d\u80fd\u5c06.Net \u7248\u672c\u5347\u7ea7\u5230 8.0 \u5462\uff1f

\n
global.json file:\n Not found\n\nHost:\n Version: 6.0.31\n Architecture: x64\n Commit: e2ca2f8a1c\n\n.NET SDKs installed:\n No SDKs were found.\n\n.NET runtimes installed:\n Microsoft.AspNetCore.App 8.0.6 [C:\\Program Files\\dotnet\\shared\\Microsoft.AspNetCore.App]\n Microsoft.NETCore.App 6.0.31 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.NETCore.App 8.0.6 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]\n Microsoft.WindowsDesktop.App 6.0.31 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\n Microsoft.WindowsDesktop.App 8.0.6 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]\n\nDownload .NET:\n https://aka.ms/dotnet-download\n\nLearn about .NET Runtimes and SDKs:\n https://aka.ms/dotnet/runtimes-sdk-info\n
\n

\"pkBekv9.png\"

\n" }, { "author": { "url": "member/huzhikuizainali", "name": "huzhikuizainali", "avatar": "https://cdn.v2ex.com/avatar/1869/a390/522912_large.png?m=1752498684" }, "url": "t/1049059", "title": "\u6211\u4f7f\u7528 vscode\uff0c\u5982\u4f55\u5e73\u7a33\u7684\u5c06.Net7.0 \u5347\u7ea7\u5230.Net8.0?", "id": "t/1049059", "date_published": "2024-06-12T15:04:58+00:00", "content_html": "

\u6211\u73b0\u5728\u4f7f\u7528 vscode \u8fdb\u884c c#\u4ee3\u7801\u8c03\u8bd5\u3002\u6211\u73b0\u5728\u4f7f\u7528\u7684\u662f.net core7.0 \u6211\u60f3\u5347\u7ea7\u5230 .net core8.0 \u3002\u6211\u627e\u5230\u5982\u4e0b\u5fae\u8f6f\u7684\u8bf4\u660e\u7f51\u9875\u3002\u4f46\u662f\u7f51\u9875\u5185\u5bb9\u6709\u70b9\u7591\u95ee\uff0c\u4e0d\u77e5\u9053\u5982\u4f55\u64cd\u4f5c\u3002

\n

1 \u3001\u7f51\u9875\u8bf4\uff1a\u66f4\u65b0 global.json \u6587\u4ef6\u3002\u4f46\u662f\u6ca1\u6709\u8bf4\u8fd9\u4e2a\u6587\u4ef6\u5728\u54ea\u91cc\uff1f\u6211\u5728 CMD \u4e2d\u8f93\u5165 dotnet --info \u8f93\u51fa\u4fe1\u606f\u4e2d\u63d0\u793a

\n

Environment variables:\nNot set

\n

global.json file:\nNot found

\n

\u6211\u95ee gpt \uff0c\u5b83\u8bf4\u201c\u5982\u679c\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u6ca1\u6709 global.json \u6587\u4ef6\uff0c\u4f60\u53ef\u4ee5\u624b\u52a8\u521b\u5efa\u4e00\u4e2a\uff1a\u201d-------------\u95ee\u9898\u662f\u6211\u6709\u5f88\u591a\u9879\u76ee\u3002\u96be\u9053\u6bcf\u4e2a\u9879\u76ee\u4e0b\u9762\u90fd\u8981\u65b0\u5efa\u4e00\u4e2a global.json \u6587\u4ef6\u3002\u90a3\u5de5\u4f5c\u91cf\u53ef\u6709\u70b9\u5927\uff01

\n

2 \u3001\u7f51\u9875\u4e0a\u8bf4\uff1a\u201c\u66f4\u65b0\u76ee\u6807\u6846\u67b6\u5c06\u9879\u76ee\u6587\u4ef6\u7684\u76ee\u6807\u6846\u67b6\u540d\u5b57\u5bf9\u8c61 (TFM) \u66f4\u65b0\u4e3a net8.0\uff1a\u201d

\n

----\u6211\u5bf9\u8fd9\u53e5\u8bdd\u7684\u7406\u89e3\u662f\u66f4\u65b0\u9879\u76ee\u4e0b\u7684 project \u6587\u4ef6\u3002\u4e5f\u5c31\u662f.csproj \u6587\u4ef6\u3002\u53ef\u662f\u6bcf\u4e2a\u9879\u76ee\u4e0b\u90fd\u6709\u597d\u591a.csproj \u6587\u4ef6\u3002\u96be\u9053\u90fd\u8981\u66f4\u65b0\uff1f

\n
gpt \u7684\u56de\u7b54\u662f\u201c\u786e\u5b9e\uff0c\u5bf9\u4e8e\u5305\u542b\u591a\u4e2a\u9879\u76ee\u7684\u89e3\u51b3\u65b9\u6848\uff0c\u9010\u4e2a\u624b\u52a8\u66f4\u65b0\u6bcf\u4e2a\u9879\u76ee\u7684 .csproj \u6587\u4ef6\u5de5\u4f5c\u91cf\u8f83\u5927\u3002\u4e0d\u8fc7\uff0c\u53ef\u4ee5\u901a\u8fc7\u7f16\u5199\u811a\u672c\u6765\u6279\u91cf\u66f4\u65b0\u8fd9\u4e9b\u6587\u4ef6\uff0c\u4ece\u800c\u51cf\u5c11\u624b\u52a8\u64cd\u4f5c\u7684\u5de5\u4f5c\u91cf\u3002\u4ee5\u4e0b\u662f\u51e0\u79cd\u89e3\u51b3\u65b9\u6848\uff0c\u53ef\u4ee5\u5e2e\u52a9\u4f60\u7b80\u5316\u8fd9\u4e2a\u8fc7\u7a0b\uff1a\u201d\n
\n

-----gpt \u7684\u56de\u7b54\u4e0d\u6562\u5168\u4fe1\u3002\u4ee5\u4e0a\u5347\u7ea7\u8fc7\u7a0b\u5b58\u5728\u5f88\u591a\u7591\u95ee\u548c\u4e0d\u786e\u5b9a\u6027\u3002\u8bf7\u95ee\u5404\u4f4d\u8001\u5e08\u662f\u5426\u6709\u5177\u4f53\u7684\u6307\u5bfc\u6216\u8005\u66f4\u7b80\u5355\u5347\u7ea7\u65b9\u6cd5\u3002\u6216\u8005\u6709\u76f8\u5173\u8be6\u7ec6\u5347\u7ea7\u6b65\u9aa4\u7684\u89c6\u9891\u5206\u4eab\u4e48\uff1f\u5982\u679c\u6211\u5c06\u5f53\u524d\u7684 7.0 \u5f7b\u5e95\u5378\u8f7d\uff0c\u91cd\u65b0\u5b89\u88c5 8.0 \u662f\u5426\u4f1a\u5bfc\u81f4\u5f53\u524d build \u7684\u9879\u76ee\u5168\u90fd\u4e0d\u53ef\u7528\uff0c\u9700\u8981\u91cd\u65b0 build \u3002\u6216\u8005\u6211\u8fd8\u662f\u8981\u624b\u52a8\u9010\u4e2a\u66f4\u65b0 vscode \u4e2d\u7684 solution \u548c project \u6587\u4ef6\uff1f

\n

https://learn.microsoft.com/zh-cn/aspnet/core/migration/70-80?view=aspnetcore-8.0&tabs=visual-studio-code#tabpanel_1_visual-studio-code

\n" }, { "author": { "url": "member/maymay5", "name": "maymay5", "avatar": "https://cdn.v2ex.com/avatar/73b4/34c3/651503_large.png?m=1757313575" }, "url": "t/1047183", "title": "\u6211\u60f3\u91cd\u6784\u6211\u8fd9\u4e2a\u9879\u76ee\u7684\u524d\u7aef\uff0c\u6709\u4ec0\u4e48\u597d\u7684\u5efa\u8bae\uff1f", "id": "t/1047183", "date_published": "2024-06-05T19:02:43+00:00", "content_html": "

\u9879\u76ee\u5730\u5740\uff1a https://github.com/MayDay-wpf/AIBotPublic

\n

\u5f53\u524d\u7528\u7684\u6280\u672f\u6808

\n\n

\u6574\u7406\u4e86\u6211\u7684\u4ee3\u7801\u540e\u53d1\u73b0\uff0c\u6211\u867d\u7136\u7528\u4e86 MVC \u4f46\u662f view \u8fd9\u4e00\u5c42\u6211\u5b8c\u5168\u6ca1\u6709\u4f7f\u7528 razor \uff0c\u800c\u662f\u7528 jquery \u7eaf\u624b\u6413 dom \u5b57\u7b26\u4e32\uff0c\u8fd9\u4e5f\u8bb8\u5bf9\u4e8e\u91cd\u6784\u524d\u7aef\u4f1a\u6709\u4e00\u5b9a\u5e2e\u52a9

\n

\u4f46\u662f\u73b0\u5728\u6709\u70b9\u9009\u62e9\u56f0\u96be\uff0c\u524d\u7aef\u6846\u67b6\u592a\u591a\u4e86\uff0c\u6211\u65e2\u60f3\u8f7b\u91cf\uff0c\u53c8\u60f3\u7ec4\u4ef6\u4e30\u5bcc\uff0c\u8fd8\u60f3\u62d3\u5c55\u80fd\u529b\u5f3a\uff0c\u5404\u4f4d\u5927\u4f6c\u4eec\u6709\u4ec0\u4e48\u5efa\u8bae\uff1f

\n" }, { "author": { "url": "member/CatCode", "name": "CatCode", "avatar": "https://cdn.v2ex.com/gravatar/7dfa8c7d43ca8f5bb37248a2009fa040?s=73&d=retro" }, "url": "t/1043993", "date_modified": "2024-05-26T01:11:14+00:00", "content_html": "\u505a\u4e00\u4e2a\u7c7b\u4f3c\u4e8e\u5c0f\u5de5\u5177\u96c6\u5408\u7684\u9879\u76ee\uff0c\u684c\u9762\u5e94\u7528\uff0c\u8bed\u8a00\u4e0d\u9650\uff0c\u8981\u6c42\u9002\u914d Win10 21H1 \u5230\u76ee\u524d\u6700\u65b0 Win11 \u7248\u672c\u3002
\u53ea\u8003\u8651 Windows \u5e73\u53f0\uff0c\u6709 Windows API \u8c03\u7528\u7684\u9700\u6c42\u3002
\u770b\u4e86\u4e00\u4e0b UI \u4e0a\u8981\u6c42\u663e\u793a/\u4ea4\u4e92\u7684\u5185\u5bb9\uff0c\u611f\u89c9 Win32 \u7a97\u4f53\u90a3\u4e00\u5957\u5c31\u5b8c\u5168\u591f\u7528\u4e86\u3002\u8981\u6c42\u8981\u5bf9 Hi-DPI \u652f\u6301\u3002
\u4e8e\u662f\u5b9a\u4e0b\u4e86\u7528 C# (.Net 8 LTS)\u505a\u3002
\u76ee\u524d\u5728\u9009 Windows \u7a97\u4f53\u5e94\u7528 \u8fd8\u662f WPF \u5e94\u7528 \u4e0a\u72af\u4e86\u96be\u3002\u5404\u4f4d V \u53cb\u6709\u4ec0\u4e48\u9ad8\u89c1\uff1f", "date_published": "2024-05-26T01:09:41+00:00", "title": "\u63a5\u4e86\u4e2a\u5c0f\u6d3b\uff0c\u9009 Windows \u7a97\u4f53\u5e94\u7528\u8fd8\u662f WPF \u5e94\u7528\uff1f", "id": "t/1043993" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1042728", "title": "AlipaySDKNet.OpenAPI \u8fd9\u4e2a\u5305\u6ca1\u591a\u5c11\u4ee3\u7801\uff0c\u4e3a\u4ec0\u4e48\u5927\u5c0f\u662f 14.1MB\uff1f\u91cc\u9762\u585e\u4e86\u4ec0\u4e48\uff1f", "id": "t/1042728", "date_published": "2024-05-21T10:48:21+00:00", "content_html": "" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1041031", "title": "EF Core \u4e0d\u5f15\u5165\u9501\uff0c\u9ad8\u5e76\u53d1\u573a\u666f ExecuteSqlRawAsync(\"UPDATE Users SET Balance = Balance + {0} WHERE UserId = {1}\");\u540e\u5982\u4f55\u83b7\u53d6 Updated \u540e\u7684\u503c\uff1f", "id": "t/1041031", "date_published": "2024-05-15T08:08:15+00:00", "content_html": "\u7528\u4e8e\u4f59\u989d\u53d8\u52a8\u8bb0\u5f55\u3002\u518d\u67e5\u4e00\u904d\u80af\u5b9a\u4e0d\u884c\uff0c\u6781\u7aef\u60c5\u51b5\u4e0b\u4e00\u4e2a\u7528\u6237\u4f1a\u540c\u65f6\u53d1 10000 \u4e2a\u4e0b\u5355\u8bf7\u6c42\uff08\u5ba2\u6237\u7aef\u968f\u786c\u4ef6\u4ea4\u4ed8\uff0c\u6ca1\u6709\u5347\u7ea7\u529f\u80fd\uff0c\u65e0\u6cd5\u66f4\u65b0\uff09\uff0c\u8fd9\u6837\u4e0d\u52a0\u9501\u4f59\u989d\u53d8\u52a8\u8bb0\u5f55\u5c31\u4e0d\u51c6\u4e86\u3002\u52a0\u9501\u7684\u8bdd\u6027\u80fd\u592a\u5dee\u4e86\u3002" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1037900", "date_modified": "2024-05-05T19:26:26+00:00", "content_html": "\u63a5\u624b\u522b\u4eba\u7684\u9879\u76ee\uff0c\u4ee3\u7801\u4e0d\u719f\u6089\uff0cdotnet-trace \u770b\u4e86\u5f88\u4e45\u4e5f\u6ca1\u627e\u51fa\u95ee\u9898

dotnet-dump \u51fa\u6765\u7684\u6570\u636e\u4e0d\u4f1a\u770b\uff0c\u7ffb\u6587\u6863\u5b66\u4e86\u5f88\u4e45\u64cd\u4f5c minidump \u7684\u547d\u4ee4\uff0c\u53d1\u73b0\u7528 dumpheap -stat -min 850000 \u8fd9\u6761\u547d\u4ee4\u53ef\u4ee5\u627e\u51fa\u4e00\u4e2a StackExchange.Redis.RawResult[] \u7684 Count \u548c TotalSize \u5f88\u5927\uff0c\u4e0d\u77e5\u9053\u662f\u5426\u6709\u5173\u7cfb\u3002\u7531\u4e8e\u5185\u5b58 dump \u91cc\u9762\u6709\u5f88\u591a\u5bc6\u94a5\u4e4b\u7c7b\u654f\u611f\u4fe1\u606f\uff0c\u8131\u654f\u51e0\u4e4e\u65e0\u6cd5\u5b8c\u6210\uff0c\u4e0d\u7136\u5c31 gzip \u538b\u7f29\u4e00\u4e0b\u653e\u51fa\u6765\u6c42\u52a9\u4e86

\u9879\u76ee\u91cc\u6709\u975e\u5e38\u591a Subscribe \u4e0d\u540c Redis \u9891\u9053\uff08\u52a8\u6001\u751f\u6210\u7684\u540d\u79f0\uff09\u7684\u64cd\u4f5c\uff0c\u4ece\u4e0d Unsubscribe \uff0c\u4e0d\u77e5\u9053\u662f\u5426\u6709\u5173\u3002", "date_published": "2024-05-05T19:18:30+00:00", "title": "ASP .NET Core 5 \u5185\u5b58\u5360\u7528\u7ebf\u6027\u589e\u52a0\uff0c 1 \u5c0f\u65f6\u5185 100%\u628a 128G \u5185\u5b58\u7528\u5b8c\uff0c\u5982\u679c\u8fd0\u884c dotnet-gcdump \u5219\u80fd\u7acb\u5373\u6062\u590d\u6b63\u5e38\u6c34\u5e73\uff0c\u67e5\u4e86\u5f88\u591a\u6587\u6863 gcdump \u90fd\u662f\u4e0d\u4f1a\u53bb\u89e6\u53d1 GC \u7684\uff0c\u4f46\u591a\u6b21\u5c1d\u8bd5\u90fd\u6210\u529f\uff0c\u6c42\u6392\u67e5\u601d\u8def", "id": "t/1037900" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1037892", "title": "\u4e3a\u4ec0\u4e48\u5f88\u591a\u6587\u7ae0/\u5de5\u5177\u90fd\u662f\u9488\u5bf9.NET Core >3.1 \u800c\u4e0d\u662f 3.0 \u7684\uff1f\u8fd9\u4e2a\u4e2a\u5c0f\u7248\u672c\u6539\u52a8\u975e\u5e38\u5927\u5417\uff1f", "id": "t/1037892", "date_published": "2024-05-05T17:06:55+00:00", "content_html": "" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1028558", "title": "ASP.NET Core \u5728 Linux \u4e0b\u90e8\u5206\u63a5\u53e3\u8017\u65f6\u957f\u3001\u5e76\u53d1\u6027\u80fd\u5dee\uff0c\u9664\u4e86\u9010\u6b65\u6253\u5370\u65e5\u5fd7\uff0c\u8fd8\u6709\u4ec0\u4e48\u65b9\u4fbf\u3001\u76f4\u89c2\u7684\u529e\u6cd5\u67e5\u51fa\u662f\u54ea\u4e00\u6b65\u8017\u65f6\u957f\u5417\uff1f", "id": "t/1028558", "date_published": "2024-03-31T09:09:47+00:00", "content_html": "\u90fd\u662f ASP .NET Core 6.0
\u7cfb\u7edf\u5927\u90e8\u5206\u662f Ubuntu 22.04 \uff0c\u4e5f\u6709 20.04 \u548c 18.04 \u7684\uff0c\u603b\u5171\u5341\u51e0\u53f0\u673a\u5668\uff0c\u7ed9\u4e0d\u540c\u5ba2\u6237\u4f7f\u7528
\u5927\u90e8\u5206\u662f\u88f8\u673a\u90e8\u7f72\uff0c\u4e5f\u6709\u90e8\u7f72\u5728 Docker \u91cc\u7684" }, { "author": { "url": "member/89ao", "name": "89ao", "avatar": "https://cdn.v2ex.com/avatar/6b62/c3df/90033_large.png?m=1733918075" }, "url": "t/1027291", "title": "\u65f6\u9694\u534a\u5e74\uff0c\u6211\u53c8\u6765\u5410\u69fd nuget \u4e86", "id": "t/1027291", "date_published": "2024-03-26T16:07:38+00:00", "content_html": "\uff08\u65e7\u8d34\uff1a t/947377 \uff09

\u6ca1\u9519\u8fd9\u4e1c\u897f\u771f\u7684\u7528\u5230\u5410\u4e86\uff0c\u6700\u8fd1\u611f\u5230\u6700\u50bb\u9e1f\u7684\u4e00\u4e2a\u70b9\u5c31\u662f\uff1a
\u5b83\u63d0\u4f9b\u4e86 Nuget list \u7684\u547d\u4ee4\uff0c\u7528\u4e8e\u5217\u51fa\u4ed3\u5e93\u4e2d\u6240\u6709\u7684\u5305\u5217\u8868\uff1b
\u7136\u540e\u65e0\u8bba\u56fd\u5185\u56fd\u5916\uff0c\u5b98\u65b9\u79c1\u670d\uff0c\u5185\u7f51\u5916\u7f51\u7684\u54ea\u4e2a\u4ed3\u5e93\uff0c\u90fd\u65e0\u6cd5\u5728\u51e0\u5341\u5206\u949f\u4e4b\u5185\u7ed3\u675f\uff1b
\u90fd\u662f 3 \u79d2\u5237\u4e00\u5c4f 3 \u79d2\u5237\u4e00\u5c4f\u7684\u5f80\u5916\u5410\u7ed3\u679c
\u90a3\u6574\u4e2a\u8bf7\u6c42\u8981\u8dd1\u591a\u4e45\uff1f
\u8fd9\u4e2a http \u8fde\u63a5\u8981\u4fdd\u6301\u591a\u4e45\uff1f server \u7aef\u7684 timeout \u600e\u4e48\u914d\u7f6e\uff1f
\u957f\u65f6\u95f4\u4e0d\u5b8c\u6210\u7684\u8fde\u63a5\u5bf9 server \u7684\u538b\u529b\u8981\u6709\u591a\u5927\uff1f

\u8bf7\u95ee\u534a\u5c0f\u65f6\u6267\u884c\u5b8c\u4e00\u4e2a list \u7684\u547d\u4ee4\uff0c\u8fd8\u6267\u884c\u5b83\u6709\u4ec0\u4e48\u610f\u4e49\uff1f


\u8fd9\u91cc\u62ff yum list \u6765\u505a\u4e2a\u5bf9\u6bd4\uff0c3s \u6267\u884c\u5b8c\ud83d\ude29\uff0c\u7b80\u5355\u53c8\u8f7b\u677e\u3002

\u7aa5\u4e00\u6591\u800c\u77e5\u5168\u8c79\uff0cnuget \u4f60\u4e0d\u7f9e\u6127\u5417\uff1f" }, { "author": { "url": "member/gopher666", "name": "gopher666", "avatar": "https://cdn.v2ex.com/gravatar/6805d7146bb5146abe7274ab6eaab7be?s=73&d=retro" }, "url": "t/1022574", "title": "visual studio code for .NET", "id": "t/1022574", "date_published": "2024-03-11T07:16:29+00:00", "content_html": "

2023 \u5e74\u6211\u81ea\u5df1\u804c\u4e1a\u751f\u6daf\u4e2d\u6709\u4e2a\u8f83\u5927\u7684\u53d8\u5316\uff0c\u75ab\u60c5\u7ed3\u675f\u4e4b\u540e\uff0c\u6211\u6765\u5230\u4e86\u4e8c\u7ebf\u57ce\u5e02\uff0c\u82b1\u4e86\u597d\u4e45\u624d\u627e\u5230\u4e00\u4efd.NET \u7684\u5de5\u4f5c\u3002\n\u5165\u804c\u9762\u8bd5\u7684\u65f6\u5019\uff0c\u9762\u8bd5\u5b98\u8ddf\u6211\u63d0\u5230\u4e86\u516c\u53f8\u5185.NET \u540e\u7aef\u7684\u5f00\u53d1\u5de5\u5177\u8981\u8f6c\u5230 vscode \u3002

\n

\u5f00\u59cb\u5c1d\u8bd5

\n

\u5f00\u59cb\u4f7f\u7528\u7684\u65f6\u5019\u7528 c# for vscode,VSCode-solution-explorer,nuget package manager,C# XML Documentation Comments \u7b49\u63d2\u4ef6\u914d\u5408\u8d77\u6765\u5f00\u53d1 dotnet6.\n\u540e\u6765\u5fae\u8f6f\u63a8\u51fa\u7684 c# for vscode + c# dev kit \u4e0d\u65ad\u7684\u5347\u7ea7\uff0c\u57fa\u672c\u4e0a\u53d6\u4ee3\u4e86\u4e4b\u524d\u7528\u7684\u90a3\u4e9b\u63d2\u4ef6\u3002\nvisual studio for MAC \u4e0a\uff0c\u5fae\u8f6f\u540e\u671f\u4e5f\u4e0d\u5728\u7ee7\u7eed\u66f4\u65b0\uff0c\u8fd9\u5c31\u610f\u5473\u7740\u5176\u4ed6\u5e73\u53f0\u4e0a.NET \u5f00\u53d1\u5de5\u5177\u7684\u4e3b\u529b\u5c31\u4f1a\u662f vscode \u3002\n\u5f00\u59cb\u4f7f\u7528\u7684\u65f6\u5019\u5148\u5c1d\u8bd5\u4e86\u76f4\u63a5\u4f7f\u7528 dotnet cli \u7684\u4e00\u4e9b\u57fa\u672c\u547d\u4ee4\uff0c\u6765\u7ba1\u7406\u9879\u76ee\u548c\u89e3\u51b3\u65b9\u6848\u3002

\n
dotnet new sln -o solution // \u65b0\u5efa\u89e3\u51b3\u65b9\u6848\ndotnet new list //\u5217\u51fa templates\ndotnet new console -n conApp // \u65b0\u5efa\u4e00\u4e2a\u63a7\u5236\u53f0\u7a0b\u5e8f\ndotnet new classlib -n Lib -f net6.0 // \u65b0\u5efa\u7c7b\u5e93\ndotnet sln add .\\Lib\\Lib.csproj \u52a0\u5165\u5230\u89e3\u51b3\u65b9\u6848\n
\n

dotnet nuget

\n
dotnet nuget list source \ndotnet nuget add source \u6dfb\u52a0\u6e90\ndotnet nuget remove source \ndotnet disable source \ndotnet enable source\n
\n

\u5f53\u7136\u6211\u4eec\u7ecf\u5e38\u7528\u8fc7\u547d\u4ee4\u6765\u7ba1\u7406\u9879\u76ee\u786e\u5b9e\u6709\u5199\u9ebb\u70e6\u3002\nc# kit dev \u7ed9 dotnet \u5f00\u53d1\u8005\u63d0\u4f9b\u4e86 solution explorer \u3002

\n

Change Cursor Style and Animation in VS Code

\n
\"editor.cursorBlinking\": \"smooth\"\n
\n

Unit test

\n

\u76ee\u524d c# dev kit \u8fd8\u6709\u4e00\u4e9b\u5b58\u5728\u7684\u95ee\u9898\u5f85\u4fee\u590d\u3002\n\u6bd4\u5982\u6211\u5e38\u7528\u5230 xunit \u6846\u67b6\u7528\u6765\u8f93\u51fa\u65e5\u5fd7\u7684 output \uff0c\u8fd8\u65e0\u6cd5\u8f93\u51fa\u5230\u63a7\u5236\u53f0\uff0c\u65e0\u6cd5\u770b\u5230\u81ea\u5df1\u6253\u5370\u7684\u4fe1\u606f\u3002\n\u76f8\u5173 issue. No output recorded after unit testing using xUnit\n\u4e3a\u4e86\u5bf9\u4ee3\u7801\u8fdb\u884c\u6d4b\u8bd5\u8986\u76d6\uff0c\u9700\u8981\u5b89\u88c5\u51e0\u4e2a\u63d2\u4ef6\n\u9996\u5148\u4ee3\u7801\u4e2d\u9700\u8981\u5f15\u5165 Coverlet

\n
dotnet add package coverlet.collector\n
\n

xunit \u9879\u76ee\u4e2d\u4f7f\u7528

\n
 dotnet test --collect:\"XPlat Code Coverage\" \n
\n

\u8fd9\u4e2a\u547d\u4ee4\u53ef\u4ee5\u914d\u7f6e\u8fc7\u6ee4\u6761\u4ef6\u6392\u9664\u4e00\u4e9b\u4e0d\u60f3\u88ab\u7edf\u8ba1\u7684\u4ee3\u7801\u53c2\u8003\u6587\u6863\n\u9700\u8981\u6dfb\u52a0\u4e00\u4e2a\u914d\u7f6e\u6587\u4ef6 coverlet.runsettings

\n
<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<RunSettings>\n <DataCollectionRunSettings>\n <DataCollectors>\n <DataCollector friendlyName=\"XPlat code coverage\">\n <Configuration>\n <Format>json,cobertura,lcov,teamcity,opencover</Format> \n <Exclude>[coverlet.*.tests?]*,[*]Coverlet.Core*</Exclude> <!-- [Assembly-Filter]Type-Filter -->\n <Include>[coverlet.*]*,[*]Coverlet.Core*</Include> <!-- [Assembly-Filter]Type-Filter -->\n <ExcludeByAttribute>Obsolete,GeneratedCodeAttribute,CompilerGeneratedAttribute</ExcludeByAttribute>\n <ExcludeByFile>**/dir1/class1.cs,**/dir2/*.cs,**/dir3/**/*.cs,</ExcludeByFile> <!-- Globbing filter -->\n <IncludeDirectory>../dir1/,../dir2/,</IncludeDirectory>\n <SingleHit>false</SingleHit>\n <UseSourceLink>true</UseSourceLink>\n <IncludeTestAssembly>true</IncludeTestAssembly>\n <SkipAutoProps>true</SkipAutoProps>\n <DeterministicReport>false</DeterministicReport>\n <ExcludeAssembliesWithoutSources>MissingAll,MissingAny,None</ExcludeAssembliesWithoutSources>\n </Configuration>\n </DataCollector>\n </DataCollectors>\n </DataCollectionRunSettings>\n</RunSettings>\n
\n

https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/VSTestIntegration.md\n\u4e3a\u4e86\u5728 vscode \u4e2d\u53ef\u4ee5\u5c55\u793a\u5bf9\u5e94\u6587\u4ef6\u7684\u4ee3\u7801\u8986\u76d6\u7387\uff0c\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e2a\u63d2\u4ef6\nCoverage Gutters https://marketplace.visualstudio.com/items?itemName=ryanluker.vscode-coverage-gutters\n\u4e3a\u4e86\u751f\u6210\u5bf9\u90a3\u4e2a\u7684\u4ee3\u7801\u6d4b\u8bd5\u62a5\u544a\uff0c\u53ef\u4ee5\u5b89\u88c5 RepotGenerator

\n

Run multiple dotnet project at once

\n

** tasks.json **

\n
[\n {\n \"command\": \"dotnet\",\n \"args\": [\n \"build\",\n \"${workspaceFolder}\\\\xxx.csproj\",\n \"/property:GenerateFullPaths=true\",\n \"/consoleloggerparameters:NoSummary\"\n ],\n \"problemMatcher\": \"$msCompile\",\n \"type\": \"process\",\n \"label\": \"dotnet: build APIGateway4\"\n }\n]\n
\n

** launch.json **

\n
[{\n \"name\": \".NET8 Launch (APIGateway4)\",\n \"type\": \"coreclr\",\n \"request\": \"launch\",\n \"preLaunchTask\": \"dotnet: build APIGateway4\",\n \"program\": \"${workspaceFolder}\\\\APIGateway4.exe\",\n \"args\": [],\n \"cwd\": \"${workspaceFolder}\\\\src\\\\APIGateway\\\\APIGateway4\",\n \"stopAtEntry\": false,\n \"serverReadyAction\": {\n \"action\": \"openExternally\",\n \"pattern\": \"\\\\bNow listening on:\\\\s+( https?://\\\\S+)\"\n },\n \"env\": {\n \"ASPNETCORE_ENVIRONMENT\": \"Development\"\n }\n }],\n \"compounds\": [\n {\n \"name\": \".NET8 Launch (ALL API Gateway)\",\n \"configurations\": [\n \".NET8 Launch (APIGateway)\",\n \".NET8 Launch (APIGateway2)\"\n ],\n \"stopAll\": false\n }\n ]\n
\n

Add bracket pair colorization to your settings.json

\n
 \"editor.guides.bracketPairs\": \"active\",\n \"editor.bracketPairColorization.enabled\": true,\n
\n

\u96c6\u6210 cmder

\n

\u6309 Ctrl + , \u6253\u5f00 VS Code setting \uff0c\u641c\u7d22 terminal profiles windows,\u6216\u8005 ctrl + shift +p \u6253\u5f00 vs code Command Pallet \u641c\u7d22\n\u7f16\u8f91 settings.json

\n
 \"terminal.integrated.defaultProfile.windows\": \"Cmder\",\n\n \"terminal.integrated.profiles.windows\": {\n \"Cmder\": {\n \"name\": \"Cmder\",\n \"path\": [\n \"${env:windir}\\\\Sysnative\\\\cmd.exe\",\n \"${env:windir}\\\\System32\\\\cmd.exe\"\n ],\n \"args\": [\"/k\", \"${env:cmder_root}\\\\vendor\\\\bin\\\\vscode_init.cmd\"],\n \"icon\": \"terminal-cmd\",\n \"color\": \"terminal.ansiGreen\"\n },\n },\n
\n

\u9700\u8981\u63d0\u524d\u914d\u7f6e\u4e00\u4e0b\u73af\u5883\u53d8\u91cf\nCMDER_ROOT \u6307\u5411 Cmder \u7684\u5b89\u88c5\u76ee\u5f55

\n

Hot keys

\n\n

Quick fix \u5931\u6548\u4e86

\n

quick fix \u6309 ctrl + . \u5931\u6548\u4e86\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u4fee\u6539\u6210\u5176\u4ed6\u7684\u5feb\u6377\u952e\nshift + ctrl + p \u8f93\u5165 Open Keyboard Shortcuts\nsearch quick fix\n\u6bd4\u5982\u4fee\u6539\u6210 ctrl + shift + .

\n

\u4f53\u4f1a

\n

\u603b\u4f53\u611f\u89c9 vscode \uff0c\u5728\u5fae\u8f6f\u66f4\u65b0\u4e86 c# + c# dev kit \u4e4b\u540e\uff0c\u5199 dotnet \u7684\u4ee3\u7801\u4f53\u9a8c\u8d8a\u6765\u8d8a\u597d\uff0c\u7ed9\u6211\u7684\u611f\u89c9\u662f\u8f7b\u91cf\u548c\u53ef\u5b9a\u5236\u5316\uff0c\u5e0c\u671b vscode for dotnet \u8d8a\u6765\u8d8a\u597d\u3002\n** \u90a3\u4e48\u4f60\u6709\u6ca1\u6709\u5728\u4f7f\u7528 vscode \u6765\u5f00\u53d1 dotnet \u5462\uff1f \u53ef\u4ee5\u4e0e\u6211\u4e00\u8d77\u8ba8\u8bba\u8fd9\u4e2a\u8bdd\u9898 **

\n" }, { "author": { "url": "member/gopher666", "name": "gopher666", "avatar": "https://cdn.v2ex.com/gravatar/6805d7146bb5146abe7274ab6eaab7be?s=73&d=retro" }, "url": "t/1021513", "title": ".NET \u7a0b\u5e8f\u5458\u7684\u8ff7\u832b", "id": "t/1021513", "date_published": "2024-03-07T08:14:15+00:00", "content_html": "

\u804c\u4f4d\u5c11\u7684\u53ef\u601c\uff0c\u4ece\u4e00\u7ebf\u5230\u4e8c\u7ebf\u6298\u817e\u4e86 3 \u4e2a\u57ce\u5e02\uff0c\u4e00\u76f4\u5e72 B/S .NET \u670d\u52a1\u7aef\uff0c\u8d8a\u5e72\u8d8a\u8ff7\u832b\uff0c\u85aa\u8d44\u8fd8\u4e0d\u9ad8\u3002\n\u9a6c\u4e0a 35 \u4e86\uff0c\u600e\u4e48\u529e\u5462\uff1f\u6709\u6ca1\u6709\u5176\u4ed6\u7684\u53d1\u5c55\u8def\u7ebf\u3002

\n" }, { "author": { "url": "member/zgsi", "name": "zgsi", "avatar": "https://cdn.v2ex.com/gravatar/d30176971faf9b0db2b0da1c27d30c81?s=73&d=retro" }, "url": "t/1019001", "title": "vs2022 win10 \u5173\u673a\u540e\u518d\u5f00\u673a\u5982\u4f55\u6062\u590d", "id": "t/1019001", "date_published": "2024-02-28T01:37:41+00:00", "content_html": "vs2012 \u91cd\u542f\u540e\u90fd\u4f1a\u6062\u590d\u5173\u673a\u4e4b\u524d\u7684\u72b6\u6001\uff0c\u4f46\u662f vs2022 \u5c31\u4e0d\u884c\u3002
\u9700\u8981\u914d\u7f6e\u4ec0\u4e48\u5417\uff1f\u8fd8\u662f\u5c31\u8fd9\u6837" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1015029", "title": "Avalonia \u73b0\u5728\u8fd8\u662f\u7075\u8f66\u5417\uff1f\u8fde\u5b98\u7f51\u6587\u6863\u90fd\u80fd\u51fa\u8fd9\u4e48\u591a bug", "id": "t/1015029", "date_published": "2024-02-08T05:37:15+00:00", "content_html": "

\u4e00\u5e74\u524d\u521a\u5b66\u4e60\u8fd9\u4e2a\u6846\u67b6\u7684\u65f6\u5019\u5b98\u7f51\u6587\u6863 Music Store App \u8fd9\u7ae0\u8282\u4e00\u534a\u7684\u56fe\u7247 404 \u9519\u8bef\uff0c\u6628\u5929\u53bb\u770b\u5012\u662f\u5df2\u7ecf\u89e3\u51b3\u4e86\uff0c\u53c8\u5f04\u51fa\u4e86\u65b0\u7684 bug \uff0c\u6587\u6863\u7684\u4fa7\u8fb9\u680f\u6298\u53e0\u540e\u65e0\u6cd5\u5c55\u5f00\n\u8fde\u5b98\u7f51\u6587\u6863\u90fd\u80fd\u51fa\u8fd9\u4e48\u591a bug \uff0c\u6846\u67b6\u7684\u7a33\u5b9a\u6027\u4e0d\u6562\u60f3

\n" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1012074", "title": "MAUI \u5728 macOS \u4e0a\u6709\u529e\u6cd5\u5b9e\u73b0\u5173\u95ed\u7a97\u53e3\u540e\u4e0d\u9000\u51fa\u5417\uff1f", "id": "t/1012074", "date_published": "2024-01-27T09:44:34+00:00", "content_html": "" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1010109", "date_modified": "2024-01-19T11:41:36+00:00", "content_html": "", "date_published": "2024-01-19T11:41:16+00:00", "title": "ClosedXML \u6709\u529e\u6cd5\u7b80\u5355\u5b9e\u73b0\u628a HTML \u4fdd\u7559\u6240\u6709\u989c\u8272\u548c\u56fe\u7247\u63d2\u5165\u5230\u4e00\u4e2a\u5355\u5143\u683c\u5417? \u6211\u60f3\u5230\u7684\u529e\u6cd5\u662f\u7528 AngleSharp \u89e3\u6790,\u4f46\u6539\u4e86\u597d\u51e0\u4e2a\u7248\u672c\u6548\u679c\u8fd8\u662f\u5f88\u5dee", "id": "t/1010109" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/997407", "date_modified": "2023-12-04T02:50:39+00:00", "content_html": "

\u534a\u5e74\u524d\u662f\u6bcf\u6708\u672c\u673a Redis \u8fde\u63a5\u8d85\u65f6\uff08 StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=0KiB, inbound=0KiB, 6???ms elapsed, timeout is 5000ms)\uff0c\u7a0b\u5e8f\u5927\u91cf\u4f7f\u7528\u4e86 Redis \u7f13\u5b58\u6570\u636e\uff0c\u65e5\u5fd7\u91cc\u6bcf\u9694\u51e0\u5929\u5c31\u4f1a\u51fa\u73b0\u8fd9\u4e2a\u9519\u8bef\uff0c\u56e0\u4e3a\u9519\u8bef\u4f1a\u81ea\u52a8\u91cd\u8bd5\uff0c\u5b9e\u9645\u5e76\u6ca1\u6709\u5f71\u54cd\u5230\u4e1a\u52a1\uff0c\u56e0\u6b64\u4e00\u76f4\u6ca1\u4eba\u7ba1\uff0c\u4e0d\u77e5\u9053\u548c\u6bcf\u6708\u56fa\u5b9a\u670d\u52a1\u6302\u6389\u4e00\u6b21\u662f\u5426\u6709\u5173\uff09\uff0c\u91cd\u542f\u540e\u5c31\u51fa\u73b0\u767b\u5f55\u9a8c\u8bc1\u7801 500 \u9519\u8bef\u7684\u95ee\u9898\uff0c\u770b\u65e5\u5fd7\u627e\u4e0d\u5230 dll \uff0c\u89c1\u56fe\uff1a\n\"\"\n\u6211\u7528 python \u5199\u4e86\u4e00\u4e2a\u6bcf 5 \u79d2\u8bf7\u6c42\u4e00\u6b21\u9a8c\u8bc1\u7801\u63a5\u53e3\uff0c\u8fde\u7eed 2 \u6b21 500 \u9519\u8bef\u5219\u91cd\u542f\u670d\u52a1\uff0c\u7a33\u5b9a 3 \u4e2a\u6708\u540e\u6545\u969c\u5347\u7ea7\u4e3a\u6bcf\u6708\u670d\u52a1\u5668\u5931\u8054\uff0c\u5931\u8054\u671f\u95f4\u65e5\u5fd7\u6ca1\u8bb0\u5f55\u5230\u4efb\u4f55\u9519\u8bef\uff0c\u4f46\u5ba2\u6237\u4ece\u963f\u91cc\u4e91\u5c0f\u7a0b\u5e8f\u770b\u7cfb\u7edf\u76d8 IO \u7206\u8868\uff1a\n\"\"\nSSH \u4e5f\u8fde\u63a5\u4e0d\u4e0a\u3002\u540c\u4e00\u5957\u7cfb\u7edf\u4ee5\u524d\u90e8\u7f72\u5728 Windows Server \u4e0b\u975e\u5e38\u7a33\u5b9a\uff0c\u4f46\u56e0\u4e3a\u4e00\u4e9b\u975e\u6280\u672f\u539f\u56e0\u73b0\u5728\u5fc5\u987b\u90e8\u7f72\u5728 Linux \u4e0b\u3002

\n", "date_published": "2023-12-04T02:47:32+00:00", "title": "\u6c42\u52a9\uff08\u9644\u65e5\u5fd7\uff09ASP.NET Core \u90e8\u7f72\u5728 Ubuntu 22.04 8 \u6838 32G \u963f\u91cc\u4e91\u4e0b\u6bcf\u6708\u56fa\u5b9a\u51fa\u73b0\u4e00\u6b21\u670d\u52a1\u5668\u5931\u8054\u60c5\u51b5\uff0c\u5177\u4f53\u65f6\u95f4\u968f\u673a\uff0c\u5931\u8054\u540e\u7cfb\u7edf\u76d8 IO \u7206\u8868\uff0c\u91cd\u542f\u53ef\u89e3\u51b3\uff0c\u5e94\u8be5\u4ece\u54ea\u91cc\u5f00\u59cb\u6392\u67e5\uff1f\u5b8c\u5168\u6ca1\u601d\u8def\uff0c\u9644\u65e5\u5fd7", "id": "t/997407" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/994142", "date_modified": "2023-11-22T05:05:40+00:00", "content_html": "

\u9700\u6c42\u662f\u51e0\u767e\u4e2a\u5ba2\u6237\u7aef\u4e0d\u65ad\u7ed9\u6211\u4eec\u4e0a\u62a5\u4e00\u4e9b\u6570\u636e\uff08\u52a0\u8d77\u6765\u6bcf\u5206\u949f 2000 \u6761\u5de6\u53f3\uff09\u6211\u4eec\u5206\u7c7b\u540e\u4e0a\u62a5\u7ed9\u4e0d\u540c\u4e0a\u6e38\u3002\u4e0a\u6e38\u7684\u63a5\u53e3\u8bbe\u8ba1\u975e\u5e38\u5dee\u52b2\uff08\u6309\u7167\u540c\u4e00\u4efd\u6587\u6863\uff09\uff0c\u4e00\u6b21\u53ea\u80fd\u63a5\u53d7\u4e00\u6761\u6570\u636e\uff0c\u6709\u7684\u4e0a\u6e38\u4e00\u4e2a\u8bf7\u6c42 3 \u5206\u949f\u624d\u54cd\u5e94\u3002\u4e0a\u6e38\u7684\u7a0b\u5e8f\u4e0d\u662f\u6211\u4eec\u80fd\u63a7\u5236\u7684\uff0c\u6211\u4eec\u4e5f\u6ca1\u6743\u5229\u8981\u6c42\u4ed6\u4eec\u4fee\u6539\u3002

\n

\u76ee\u524d\u6211\u7684\u8bbe\u8ba1\u662f\u4e00\u4e2a\u72ec\u7acb ASP.Net Core \u7a0b\u5e8f\u63a5\u53d7\u6570\u636e\u5b58\u5165\u6570\u636e\u5e93\uff08\u56e0\u4e3a\u6709\u5728\u7ebf\u7387\u8981\u6c42\uff0c\u5904\u7406\u4efb\u52a1\u7684\u7a0b\u5e8f\u9700\u8981\u7ecf\u5e38\u91cd\u542f\u66f4\u65b0\uff0c\u6709\u7684\u65f6\u5019\u4f1a\u66f4\u65b0\u574f\u6389\uff09\uff0c\u53e6\u4e00\u4e2a\u7a0b\u5e8f\u6bcf 2 \u79d2\u67e5\u8be2\u4e00\u6b21\u6570\u636e\u5e93\u7684\u65b0\u6570\u636e\uff0c\u6309\u9700\u8981\u4e0a\u62a5\u7684\u4e0a\u6e38\u5206\u7c7b\u597d\u8fdb\u5165 5 \u4e2a\u4e0d\u540c\u961f\u5217\uff08\u4e0d\u80fd\u63a5\u53d7\u6570\u636e\u7684\u65f6\u5019\u5c31\u5206\u7c7b\uff0c\u56e0\u4e3a\u5206\u7c7b\u7684\u903b\u8f91\u4e5f\u8981\u7ecf\u5e38\u6539\uff09\uff0c\u53e6\u5916\u542f\u52a8\u7684\u65f6\u5019\u5f00 5 \u4e2a\u7ebf\u7a0b\u5728\u6570\u636e\u5e93\u91cc\u626b\u63cf\u8fd9\u4e9b\u961f\u5217\uff0c\u53d1\u73b0\u65b0\u7684\u4efb\u52a1\u5c31\u5f00\u4e00\u4e2a\u5f02\u6b65 Task \u4e0a\u62a5\u3002\u4e0d\u540c\u4e0a\u6e38\u80fd\u63a5\u53d7\u7684\u5e76\u53d1\u4e0d\u4e00\u6837\uff0cTask \u5916\u9762\u6709\u4e2a semaphoreSlim.WaitAsync();\u9632\u6b62\u628a\u4e0a\u6e38\u670d\u52a1\u5f04\u70b8\u3002\u8fd9\u79cd\u5b9e\u73b0 CPU \u5360\u7528\u7387\u5f88\u9ad8\uff0c4C8G \u963f \u91cc \u4e91\u5360\u7528\u4e00\u76f4\u5728 100%\uff0c\u6709\u6ca1\u6709\u4eba\u77e5\u9053\u6700\u4f73\u5b9e\u73b0\u662f\u4ec0\u4e48\uff1f

\n", "date_published": "2023-11-22T04:58:21+00:00", "title": "\u6c42\u52a9 C#\u6709\u529e\u6cd5\u5728\u81ea\u5df1\u7a0b\u5e8f\u5185\u90e8\u5b9e\u73b0\u4e00\u4e2a\u8de8\u7ebf\u7a0b\u7684\u7b80\u6613\u6d88\u606f\u961f\u5217\u5417\uff1f\u73b0\u5728\u8fd9\u79cd\u8f6e\u8be2\u6570\u636e\u5e93\u7684\u5b9e\u73b0 CPU \u5360\u7528\u7387\u5f88\u9ad8\uff0c 4C8G \u963f \u91cc \u4e91\u5360\u7528\u4e00\u76f4\u5728 100%", "id": "t/994142" }, { "author": { "url": "member/uCharles", "name": "uCharles", "avatar": "https://cdn.v2ex.com/avatar/c1fc/5c02/465405_large.png?m=1766416433" }, "url": "t/993760", "date_modified": "2023-11-22T01:48:25+00:00", "content_html": "

\u9700\u6c42\uff1a\u6709\u4e00\u4e2a\u7edf\u4e00\u7684 Web \u7f51\u9875\uff08.net core 7.0 \uff09\u8981\u6c42\u5728\u57df\u5185\u8d26\u6237\u6253\u5f00\u8fd9\u4e2a\u7f51\u9875\u65f6\u81ea\u52a8\u83b7\u53d6\u5230\u5f53\u524d\u7684\u57df\u8d26\u6237\u540d\u3002

\n

\u5c1d\u8bd5\uff1a\n1 \u3001\u5728\u6dfb\u52a0\u4e86\u4e00\u4e9b\u4ee3\u7801\u540e\uff0c\u6211\u81ea\u5df1\u5728\u672c\u5730\u4e0a\u8fd0\u884c\u53ef\u4ee5\u83b7\u53d6\u5230\uff0c\u4f46\u662f\u53d1\u5e03\u5230 IIS \u4e0a\u65e0\u6cd5\u83b7\u53d6\n2 \u3001\u540e\u6765\u53c8\u6309\u7167\u5fae\u8f6f\u5b98\u65b9\u6587\u6863\u5c1d\u8bd5\u5728 Program.cs \u4e2d\u6dfb\u52a0\u4e00\u4e9b\u4ee3\u7801\u540e\uff0c\u5728\u6253\u5f00\u8fd9\u4e2a\u7edf\u4e00 Web \u7f51\u9875\u7684\u65f6\u5019\u9700\u8981\u4f7f\u7528\u57df\u8d26\u6237\u5bc6\u7801\u767b\u5f55\uff0c\u767b\u9646\u540e\u7684\u786e\u80fd\u83b7\u53d6\u5230\u57df\u8d26\u6237\u540d\u79f0\u3002

\n

\u6c42\u52a9\uff1a\u73b0\u5728\u5c31\u662f\u60f3\uff0c\u6709\u6ca1\u6709\u4e00\u4e2a\u529e\u6cd5\u53ef\u4ee5\u4e0d\u767b\u5f55\u7a97\u53e3\u4ece\u800c\u8fdb\u5165\u7f51\u9875\u76f4\u63a5\u83b7\u53d6\u5f53\u524d\u57df\u8d26\u6237\u540d\uff0c\u8bf7\u5404\u4f4d\u5927\u4f6c\u6307\u70b9\n\u4e4b\u524d\u6ca1\u5f04\u8fc7 asp.net \uff0c\u611f\u89c9\u65e0\u4ece\u4e0b\u624b

\n", "date_published": "2023-11-21T03:17:02+00:00", "title": "\u8bf7\u6559\u4e00\u4e0b asp.net core \u6280\u672f\u95ee\u9898", "id": "t/993760" }, { "author": { "url": "member/hez2010", "name": "hez2010", "avatar": "https://cdn.v2ex.com/gravatar/381b2bc7dec2504c148fd6cd9d0db10c?s=73&d=retro" }, "url": "t/991958", "date_modified": "2023-11-15T00:13:16+00:00", "content_html": "

\u66f4\u65b0\u5185\u5bb9\u8fd8\u662f\u5f88\u5de8\u91cf\u7684\uff0c8.0 \u7248\u672c\u6b63\u597d\u4e5f\u662f LTS \u5e26\u957f\u671f\u652f\u6301\u3002

\n

\u4e3b\u8981\u66f4\u65b0:

\n

.NET \u8fd0\u884c\u65f6\u548c\u57fa\u7840\u5e93: https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8

\n

ASP.NET Core (Web \u5f00\u53d1): https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-8.0

\n

Entity Framework Core (ORM): https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/whatsnew

\n

MAUI (\u8de8\u5e73\u53f0 UI): https://learn.microsoft.com/en-us/dotnet/maui/whats-new/dotnet-8

\n

C#: https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12

\n

F#: (\u66f4\u65b0\u65e5\u5fd7\u8fd8\u6ca1\u53d1\u4e8e\u662f\u5148\u653e\u4e2a blog) https://devblogs.microsoft.com/dotnet/announcing-fsharp-8

\n

\u5b98\u65b9 Blog \u4ecb\u7ecd:

\n

.NET 8: https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-8

\n

ASP.NET Core 8: https://devblogs.microsoft.com/dotnet/announcing-asp-net-core-in-dotnet-8

\n

Entity Framework Core 8: https://devblogs.microsoft.com/dotnet/announcing-ef8

\n

Aspire (\u4e91\u539f\u751f\u5f00\u53d1): https://devblogs.microsoft.com/dotnet/introducing-dotnet-aspire-simplifying-cloud-native-development-with-dotnet-8

\n

C# 12: https://devblogs.microsoft.com/dotnet/announcing-csharp-12

\n

F# 8: https://devblogs.microsoft.com/dotnet/announcing-fsharp-8

\n

MAUI: https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-in-dotnet-8

\n

\u6027\u80fd\u6539\u8fdb:

\n

https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8

\n

https://devblogs.microsoft.com/dotnet/this-arm64-performance-in-dotnet-8

\n

https://devblogs.microsoft.com/dotnet/dotnet-8-performance-improvements-in-dotnet-maui

\n", "date_published": "2023-11-14T17:53:59+00:00", "title": ".NET 8 \u53d1\u5e03\u6b63\u5f0f\u7248\u4e86", "id": "t/991958" }, { "author": { "url": "member/bthulu", "name": "bthulu", "avatar": "https://cdn.v2ex.com/gravatar/c87484c1062f990c6ef9e1a9c27bdc60?s=73&d=retro" }, "url": "t/990376", "date_modified": "2023-11-09T11:18:44+00:00", "content_html": "

\u4e00\u4e2a\u9879\u76ee, \u975e\u8981\u62c6\u6210\u597d\u51e0\u4e2a\u9879\u76ee, \u6068\u4e0d\u5f97\u4e00\u4e2a class \u5bf9\u5e94\u4e00\u4e2a dll \u6587\u4ef6, \u5237\u7206 nuget \u6392\u540d

\n

\u8bf4\u7684\u5c31\u662f\u4f60, serilog, asyncex.

\n

\u4e00\u4e2a\u7b80\u5355\u7684\u5de5\u5177\u7c7b tools, string \u76f8\u5173\u7684\u8d77\u4e00\u4e2a\u9879\u76ee, int \u76f8\u5173\u7684\u8d77\u4e00\u4e2a\u9879\u76ee, long \u76f8\u5173\u7684\u8d77\u4e00\u4e2a\u9879\u76ee, \u7136\u540e\u4e00\u80a1\u8111\u4e0a\u4f20\u5230 nuget \u4e0a\u9762, \u4f60\u60f3\u5f15\u5165 tools, \u77ac\u95f4\u5c31\u7ed9\u4f60\u5e26\u5165 toos.string, tools.int, tools.long, tools.double, tools.float, tools.bool, tools.common, tools.context.

\n

\u603b\u4e4b\u4e00\u53e5\u8bdd, \u4e0d\u7528 dll \u6587\u4ef6\u628a\u4f60\u7684 publish \u6587\u4ef6\u5939\u585e\u7206\u7edd\u4e0d\u7f62\u4f11.

\n

\u5b83\u660e\u660e\u53ef\u4ee5\u7528\u4e00\u4e2a 30kb \u7684 tools.dll, \u5b83\u4e0d, \u5b83\u975e\u8981\u62c6\u6210 10 \u4e2a 3kb \u7684 dll

\n

\u5982\u679c\u4f9d\u8d56\u7684\u4e09\u65b9\u5e93\u7a0d\u5fae\u591a\u4e00\u70b9, \u90a3\u6700\u540e\u53d1\u5e03\u6587\u4ef6\u5939\u7b80\u76f4\u5c31\u8ddf node_modules \u4e00\u6837\u81c3\u80bf.

\n

\u6211\u89c9\u7740\u518d\u8fd9\u4e48\u4e0b\u53bb, \u603b\u6709\u4e00\u5929\u53d1\u5e03\u6587\u4ef6\u5939\u5185\u7684\u6587\u4ef6\u4f1a\u6210\u5343\u4e0a\u4e07\u751a\u81f3\u51e0\u5341\u4e07.

\n", "date_published": "2023-11-09T11:16:01+00:00", "title": ".net \u7684\u5e93\u4f5c\u8005\u662f\u4e0d\u662f\u90fd\u5728\u5411 js \u770b\u9f50?", "id": "t/990376" }, { "author": { "url": "member/longmeier90", "name": "longmeier90", "avatar": "https://cdn.v2ex.com/gravatar/8dbc4123e8644a41d1409ad8dd0d0b35?s=73&d=retro" }, "url": "t/977527", "title": ".net \u521a\u901a\u7535\u6ca1\u6709\u89e6\u53d1\u600e\u4e48\u7528\u8f6f\u4ef6\u4e3b\u52a8\u83b7\u53d6\u7ea2\u5916\u4f20\u611f\u5668\u7684\u4fe1\u53f7\u3002", "id": "t/977527", "date_published": "2023-09-27T03:52:31+00:00", "content_html": "\u6211\u7528.net \u5f00\u53d1\u4e86\u4e00\u4e2a\u8f6f\u4ef6\uff0c\u4ece\u7ea2\u5916\u4f20\u611f\u5668\u8fde\u63a5\u7535\u8111\u7684\u7aef\u53e3(com3)\u83b7\u53d6\u9ad8\u4f4e\u7535\u5e73\u4fe1\u53f7\u6765\u5224\u65ad\u5f53\u524d\u8bbe\u5907\u5904\u5728\u662f\u5de6\u773c\u3001\u53f3\u773c\u4e0a\uff0c\u4f46\u662f\u6709\u4e00\u4e2a\u5f0a\u7aef\u662f\u53ea\u6709\u89e6\u53d1\u5b83\u624d\u4e3b\u52a8\u53d1\u51fa\u4fe1\u53f7\u3002

\u6211\u6709\u4e00\u4e2a\u9700\u6c42\u662f\uff0c\u5f53\u8f6f\u4ef6\u521d\u59cb\u5316\u65f6\u9700\u8981\u4e3b\u52a8\u83b7\u53d6\u7ea2\u5916\u4f20\u611f\u5668\u5f53\u524d\u7684\u4fe1\u53f7\uff08\u56e0\u4e3a\u6ca1\u6709\u89e6\u53d1\u5f53\u524d\u4e0d\u4f1a\u53d1\u51fa\u4fe1\u53f7\uff09\uff0c\u5224\u65ad\u8bbe\u5907\u5904\u5728\u5de6\u773c\u8fd8\u662f\u53f3\u773c\u3002

\u6709\u6ca1\u6709\u5f00\u53d1\u8fc7\u8fd9\u65b9\u9762\u7684\u5927\u4f6c\uff0c\u8bf7\u591a\u591a\u6307\u6559\u3002" }, { "author": { "url": "member/gowl", "name": "gowl", "avatar": "https://cdn.v2ex.com/avatar/5ac2/2987/238695_large.png?m=1672871210" }, "url": "t/975403", "date_modified": "2023-09-20T02:48:37+00:00", "content_html": "

What's new in Windows Forms in .NET 7.0\nhttps://devblogs.microsoft.com/dotnet/winforms-enhancements-in-dotnet-7/

\n", "date_published": "2023-09-20T01:17:55+00:00", "title": "\u770b\u6765 Windows Forms \u4f9d\u7136\u6d3b\u7684\u597d\u597d\u7684", "id": "t/975403" } ] } ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86