|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2024-03-05, 10:21 AM | #1 |
版區管理員
|
討論 - 有人有用C#寫程式嗎
最近有接觸C#後,發覺C#似乎無法編譯單一執行檔,必須連帶dll,xml等檔案,才可執行,不過估狗了一下,好像有不少方法可以解決這問題,但好像都蠻複雜的
有人有用過嗎?可否提供一下經驗 |
__________________ 『唸金母心咒:嗡。金母。悉地。吽。』 持此咒者,可免一切瘟疫,一切瘟神抱頭四散。 魔術就是欣賞神奇的效果 如果魔術的秘密被破解了 那魔術就失去欣賞的價值 |
|
送花文章: 1533,
|
2024-03-06, 02:53 PM | #2 (permalink) |
版區管理員
|
語法:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Toolstoy { public partial class Form1 : Form { [StructLayout(LayoutKind.Sequential)] public struct SHFILEINFO { public IntPtr hIcon; public int iIcon; public uint dwAttributes; public string szDisplayName; public string szTypeName; }; const uint SHGFI_ICON = 0x00000100; const uint SHGFI_LARGEICON = 0x00000000; const uint SHGFI_SMALLICON = 0x00000001; const uint SHGFI_SYSICONINDEX = 0x4000; [DllImport("shell32.dll")] public static extern IntPtr SHGetFileInfo(string filename, uint fileattributes, ref SHFILEINFO shfi, uint cbfi, uint flag); [DllImport("user32.dll")] public static extern bool DestroyIcon(IntPtr hIcon); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { listView1.Items.Clear(); listView1.Columns.Add("名稱", 300, HorizontalAlignment.Left); listView1.Columns.Add("大小", 100, HorizontalAlignment.Right); listView1.View = View.Details; //DirectoryInfo selDir = new DirectoryInfo(Environment.CurrentDirectory); DirectoryInfo selDir = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)); //this.Text=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); DirectoryInfo[] listDir; FileInfo[] listFile; try { } catch { } listDir = selDir.GetDirectories(); listFile = selDir.GetFiles(); foreach (DirectoryInfo d in listDir) { SHFILEINFO shfi = new SHFILEINFO(); SHGetFileInfo(d.FullName, 0, ref shfi, (uint)Marshal.SizeOf(shfi), SHGFI_ICON | SHGFI_SMALLICON); Icon myicon = (Icon)Icon.FromHandle(shfi.hIcon).Clone(); DestroyIcon(shfi.hIcon); imageList1.Images.Add("dir", myicon); ListViewItem lv = new ListViewItem(d.Name); lv.ImageKey = "dir"; listView1.Items.Add(lv); } foreach (FileInfo d in listFile) { SHFILEINFO shfi = new SHFILEINFO(); SHGetFileInfo(d.FullName, 0, ref shfi, (uint)Marshal.SizeOf(shfi), SHGFI_ICON | SHGFI_SMALLICON); Icon myicon = (Icon)Icon.FromHandle(shfi.hIcon).Clone(); DestroyIcon(shfi.hIcon); imageList1.Images.Add(d.Extension, myicon); ListViewItem lv = new ListViewItem(d.Name); string num = d.Length.ToString(); lv.ImageKey = d.Extension; lv.SubItems.Add(num); listView1.Items.Add(lv); } } } } |
送花文章: 1533,
|
2024-03-06, 03:44 PM | #3 (permalink) |
管理版主
|
我是沒裝 C#
不過看那一篇文章 https://www.ruyut.com/2023/01/dotnet...eployment.html 好像不會很複雜 看到 ========================= 另外透過下面這行指令就可以不在 csproj 檔案中設定,就不包含執行環境、不產生 .pdb 檔案,只輸出一個 exe 檔案: ========================= 下的命令範例 語法:
dotnet publish -r win-x64 -p:PublishSingleFile=true -p:DebugType=embedded --no-self-contained 比如你的專案是建置在 I:\VS2010\KWattIs\ 就依序輸入 I: [按ENTER] CD I:\VS2010\KWattIs\ [按ENTER] 最後如實貼上 語法:
dotnet publish -r win-x64 -p:PublishSingleFile=true -p:DebugType=embedded --no-self-contained 又因為這使用 Visual Studio 命令提示字元 使用命令行做建檔方式 很可能會發生 提示 dotnet不是内部或外部的命令,也不是可运行的程序或批处理 ... WWW上說你可以這樣做 https://www.cnblogs.com/wx881208/p/17011698.html ********************* 也就是 你可以先檢查一下 PATH 改過就必須重開機才有效 以上~沒實做過 (只玩 VB沒玩 C) 此帖於 2024-03-06 10:00 PM 被 mini 編輯. |
送花文章: 2013,
|
向 mini 送花的會員:
|
魔術王子 (2024-03-06)
感謝您發表一篇好文章 |
2024-03-08, 11:23 AM | #4 (permalink) |
版區管理員
|
語法:
想要發布單一檔案則需要在 csproj 檔案中增加 PublishSingleFile <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net7.0-windows</TargetFramework> <Nullable>enable</Nullable> <UseWindowsForms>true</UseWindowsForms> <ImplicitUsings>enable</ImplicitUsings> <PublishSingleFile>true</PublishSingleFile> </PropertyGroup> </Project> 附帶一聊,M$好像已經不再對basic 做更新了,連帶網站都取消basic 的教學範例 |
送花文章: 1533,
|
向 魔術王子 送花的會員:
|
mini (2024-03-08)
感謝您發表一篇好文章 |
2024-03-08, 01:50 PM | #5 (permalink) |
版區管理員
|
語法:
Imports System.IO Imports System.Runtime.InteropServices Public Class Form1 Private Structure SHFILEINFO Public hIcon As IntPtr ' : icon Public iIcon As Integer ' : icondex Public dwAttributes As Integer ' : SFGAO_ flags <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szDisplayName As String <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> Public szTypeName As String End Structure Private Declare Ansi Function SHGetFileInfo Lib "shell32.dll" (ByVal pszPath As String, ByVal dwFileAttributes As Integer, ByRef psfi As SHFILEINFO, ByVal cbFileInfo As Integer, ByVal uFlags As Integer) As IntPtr Private Const SHGFI_ICON = &H100 Private Const SHGFI_SMALLICON = &H1 Private Const SHGFI_LARGEICON = &H0 ' Large icon Private nIndex = 0 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ListView1.Items.Clear() Me.ListView1.View = View.Details Me.ListView1.SmallImageList = Me.ImageList1 Me.ListView1.Columns.Add("檔案名稱", 500, HorizontalAlignment.Left) Me.ListView1.Columns.Add("修改日期", 160, HorizontalAlignment.Left) Dim shinfo As SHFILEINFO shinfo = New SHFILEINFO() Dim spd() As String = {"桌面", "文件", "下載"} For Each dn As String In spd Dim bn As New ToolStripButton(dn) Select Case (dn) Case "桌面" SHGetFileInfo(My.Computer.FileSystem.SpecialDirectories.Desktop, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON) bn.ToolTipText = My.Computer.FileSystem.SpecialDirectories.Desktop() Case "文件" SHGetFileInfo(My.Computer.FileSystem.SpecialDirectories.MyDocuments, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON) bn.ToolTipText = My.Computer.FileSystem.SpecialDirectories.MyDocuments Case "下載" SHGetFileInfo(My.Computer.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", False).GetValue("{374DE290-123F-4565-9164-39C4925E467B}"), 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON) bn.ToolTipText = My.Computer.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", False).GetValue("{374DE290-123F-4565-9164-39C4925E467B}") End Select bn.Image = System.Drawing.Icon.FromHandle(shinfo.hIcon).ToBitmap ToolStrip2.Items.Add(bn) AddHandler bn.Click, AddressOf ToolStripButton_Click Next Dim drives() As String = Directory.GetLogicalDrives() For Each drv As String In drives Dim bn As New ToolStripButton(drv) SHGetFileInfo(drv, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON) bn.Image = System.Drawing.Icon.FromHandle(shinfo.hIcon).ToBitmap ToolStrip2.Items.Add(bn) AddHandler bn.Click, AddressOf ToolStripButton_Click Next FileSystemWatcher1.Path = My.Computer.FileSystem.CurrentDirectory FileSystemWatcher1_Changed(sender, Nothing) End Sub Private Sub FileSystemWatcher1_Changed(sender As Object, e As FileSystemEventArgs) Handles FileSystemWatcher1.Changed ImageList1.Images.Clear() Me.ListView1.Items.Clear() Dim hImgSmall As IntPtr 'The handle to the system image list. Dim shinfo As SHFILEINFO Dim nIndex As Integer = 0 shinfo = New SHFILEINFO() Dim dir As New DirectoryInfo(FileSystemWatcher1.Path) Dim dirs As DirectoryInfo() = dir.GetDirectories("*.*") Dim diNext As DirectoryInfo For Each diNext In dirs hImgSmall = SHGetFileInfo(diNext.FullName, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON) Dim myIcon As System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon) ImageList1.Images.Add("dir", myIcon) 'Add icon to imageList. Dim lvItem As New ListViewItem(diNext.Name, "dir") lvItem.SubItems.Add(diNext.LastWriteTime) Me.ListView1.Items.Add(lvItem) Next For Each f In dir.GetFiles("*.*") hImgSmall = SHGetFileInfo(f.FullName, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON) Dim myIcon As System.Drawing.Icon myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon) ImageList1.Images.Add(f.Extension, myIcon) 'Add icon to imageList. Dim lvItem As New ListViewItem(f.Name, f.Extension) lvItem.SubItems.Add(f.LastWriteTime) Me.ListView1.Items.Add(lvItem) Next End Sub Private Sub ToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) FileSystemWatcher1.Path = DirectCast(sender, ToolStripButton).ToolTipText FileSystemWatcher1_Changed(sender, Nothing) End Sub End Class |
送花文章: 1533,
|
2024-03-08, 08:26 PM | #6 (permalink) | |
管理版主
|
引用:
windows 1X 只要 VB 還能執行就好 當初 Win 10說不再支援 VB 6 但 以前用 VB6寫的目前也運行無誤 ... (也能安裝 VB 6無誤) 用好一點的 PC去跑 用起來感覺能再跑個 10幾 20年 (模擬程式命中率也不低) |
|
送花文章: 2013,
|
向 mini 送花的會員:
|
魔術王子 (2024-03-09)
感謝您發表一篇好文章 |
2024-03-12, 08:28 PM | #8 (permalink) | |
管理版主
|
引用:
現在AI很夯 那些名人說 叫大家不用因為AI是新興產業 而去學 AI大模型如何寫(程式設計),因為以後寫程式交給AI就可以 這是 有點對也有點不對的說法 因為 要了解一個產業 你必須學些基礎,比如人類發明計算機,並不會因此不去學數學 根據你的領域去使用工具,你可以把程式都交給AI寫,但你有可能會錯過一些東西 人的發明應用很多時候是意外下的產物 如果哪天人們把程式寫作完全外包給AI 或許會扼殺 "下一個劃時代的發明" 而是 你可以把已經有的經驗交給它實現 節省時間去做更有意思的事物 創作就是其中之一 這個想法 與現在AI的發明之情境同樣不謀而合 (學新的程式語言與初衷有偏,是為了創作去學工具,而不是為了學工具去創作) 什麼層面使用什麼樣的深度 不是系統工程師就學到此就好了 大概再過個 5年吧~ (AI更普及,人人都能負擔起高檔的AI PC助理) 以後學校就不是教你寫程式,而是教幾堂程式概念後 就教你如何使用AI這個工具去天馬行空 此帖於 2024-03-12 08:38 PM 被 mini 編輯. |
|
送花文章: 2013,
|
向 mini 送花的會員:
|
魔術王子 (2024-03-12)
感謝您發表一篇好文章 |
2024-03-15, 03:09 PM | #10 (permalink) | |
管理版主
|
引用:
首位AI軟體工程師Devin誕生能寫程式、除錯、建立網站 機器人新創募資報捷Figure獲6.7億美元資金 文中有提到一句 【該公司將用籌來的資金擴大AI訓練、機器人製造,並聘請更多工程師。】 讓人噴飯,是在騙智障嗎? 等這位超級AI軟體工程師利用了人類智慧訓練完成後 這些人就變成米蟲,老闆就把你們解聘 一個軟體工程師在怎麼厲害也比不過 所有程式語言精通的 一位AI軟體工程師厲害 吧~ 到時候老闆只留有創意的員工 做死做活腦袋著火的前員工 去當外送員都沒得當(因為現在已經有天上飛的與地上走的之外送員) ================ 目前的 AI是 生成式AI,也就是能某種程度的無中生有 現在人們會說人類只要能保持創意就不用怕 AI 但其實現在的AI已經有創意的影子 【一本正經地胡說八道】其實就是某一種程度的創意,只要未來兩家不同的 AI能對話 只要硬體繼續突破 人類花以年為單位的進化 AI則是以分秒為單位在進化 到時AI就極可能能達到真正人類創作的地步 這其實真的很恐怖,以後AI不再是工具 可能先成為事業夥伴(諮詢師) 接著是董事(找一位街友掛名) 最後成為老闆(轉投資後變某公司的公司的實際出資者),人類只能做女僕般的工作 哈~ 離人類毀滅不遠了 只希望活的時候不會見到 (離開地表後就不關我的事) 此帖於 2024-03-15 03:39 PM 被 mini 編輯. |
|
送花文章: 2013,
|
向 mini 送花的會員:
|
魔術王子 (2024-03-15)
感謝您發表一篇好文章 |