diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib.ico b/Windows/CS/Framework4.0/CubeLib/CubeLib.ico new file mode 100644 index 0000000..e90ab1c Binary files /dev/null and b/Windows/CS/Framework4.0/CubeLib/CubeLib.ico differ diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib.sln b/Windows/CS/Framework4.0/CubeLib/CubeLib.sln new file mode 100644 index 0000000..71143c6 --- /dev/null +++ b/Windows/CS/Framework4.0/CubeLib/CubeLib.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.36617.4 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CubeLib", "CubeLib\CubeLib.csproj", "{0AAA20B8-F8B1-4C09-ADBF-E6FD650EE9D4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0AAA20B8-F8B1-4C09-ADBF-E6FD650EE9D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0AAA20B8-F8B1-4C09-ADBF-E6FD650EE9D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0AAA20B8-F8B1-4C09-ADBF-E6FD650EE9D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0AAA20B8-F8B1-4C09-ADBF-E6FD650EE9D4}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7019BD3D-89E7-4B0D-85B6-9E26BD8EF151} + EndGlobalSection +EndGlobal diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj b/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj new file mode 100644 index 0000000..8fc13fa --- /dev/null +++ b/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {0AAA20B8-F8B1-4C09-ADBF-E6FD650EE9D4} + Library + Properties + JoyD.Windows.CS + JoyD.Windows.CS.CubeLib + v4.0 + 512 + true + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + bin\Debug\JoyD.Windows.CS.CubeLib.xml + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + ..\packages\WebSocketSharp-netstandard.1.0.1\lib\net35\websocket-sharp.dll + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.ico b/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.ico new file mode 100644 index 0000000..e90ab1c Binary files /dev/null and b/Windows/CS/Framework4.0/CubeLib/CubeLib/CubeLib.ico differ diff --git a/Windows/CS/Framework4.0/CubeLib/CubeLib/Properties/AssemblyInfo.cs b/Windows/CS/Framework4.0/CubeLib/CubeLib/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..f419692 --- /dev/null +++ b/Windows/CS/Framework4.0/CubeLib/CubeLib/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Net40通用控件库")] +[assembly: AssemblyDescription("包含WebSocket等控件")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("JoyD")] +[assembly: AssemblyProduct("com.joyd.CubeLib")] +[assembly: AssemblyCopyright("Copyright © 2025 JoyD")] +[assembly: AssemblyTrademark("JoyD")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("0aaa20b8-f8b1-4c09-adbf-e6fd650ee9d4")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.1.0")] +[assembly: AssemblyFileVersion("1.0.1.0")] diff --git a/Windows/CS/Framework4.0/CubeLib/publish-nuget.ps1 b/Windows/CS/Framework4.0/CubeLib/publish-nuget.ps1 new file mode 100644 index 0000000..990879f --- /dev/null +++ b/Windows/CS/Framework4.0/CubeLib/publish-nuget.ps1 @@ -0,0 +1,374 @@ +# 托普瑞控制库发布脚本 请在 chcp 65001下运行 + +# 配置参数 - 基本设置 +$scriptDir = Get-Location +$output = Join-Path $scriptDir "Output" +$server = "http://47.111.181.23:8081/repository/nuget-releases/" +$key = "admin:admin" +$actualDllName = "JoyD.Windows.CS.Utils.dll" +$targetDllName = "JoyD.Windows.CS.Utils.dll" # 保持与AssemblyName一致,避免引用问题 + +# NuGet包元数据配置 - 在此处修改所有元数据 +$packageId = "com.joyd.utils" + +# 从AssemblyInfo.cs的AssemblyFileVersion获取版本号 +$assemblyInfoPath = Join-Path $scriptDir "Utils\Properties\AssemblyInfo.cs" +if (Test-Path $assemblyInfoPath) { + $assemblyInfoContent = Get-Content -Path $assemblyInfoPath -Encoding UTF8 -Raw + + # 只从AssemblyFileVersion获取版本号 + $fileVersionMatch = [regex]::Match($assemblyInfoContent, '(? + + + + + + + + + + + + + + + + + + + + +"@ + +# 设置配置文件 +Set-Content -Path $localNugetConfigPath -Value $nugetConfigContent +Write-Host "已在Output目录设置NuGet.Config: $localNugetConfigPath" + +# 创建一个简单的.csproj文件用于打包,无需还原 +$tempProjContent = @" + + + net40 + $packageId + $version + $title + $authors + $owners + $description + $copyright + $tagsString + $projectUrl + $licenseUrl + $iconFileName + + $releaseNotes + . + true + true + true + true + + + + + + +"@ + +$tempProjPath = "$output\Temp.csproj" +Set-Content -Path $tempProjPath -Value $tempProjContent + +# 在输出目录中创建包结构 +Write-Host "3. 创建NuGet包.." + +# 在输出目录中创建完整的nuspec文件 +$nuspecPath = Join-Path $output "$packageId.nuspec" + +# 将tags数组转换为空格分隔的字符串 +$tagsString = $tags -join " " + +$nuspecContent = @" + + + + $packageId + $version + $title + $authors + $owners + false + $description + $releaseNotes + $copyright + $tagsString + $projectUrl + $licenseUrl + $iconFileName + $iconUrl + + + + + + + + + + + + + + +"@ + +Set-Content -Path $nuspecPath -Value $nuspecContent -Encoding UTF8 +Write-Host "已创建nuspec文件: $nuspecPath" + +# 手动创建nupkg包结构 +Write-Host "创建包结构.." +$tempDir = Join-Path $output "temp_pkg" + +# 确保临时目录存在 +if (!(Test-Path $tempDir)) { + New-Item -ItemType Directory -Path $tempDir -Force | Out-Null +} + +# 创建lib/net40子目录 +$libDir = Join-Path $tempDir "lib\net40" +if (!(Test-Path $libDir)) { + New-Item -ItemType Directory -Path $libDir -Force | Out-Null +} + +# 复制DLL到包结构中 +$sourceDllPath = Join-Path $output $targetDllName +$destDllPath = Join-Path $libDir $targetDllName +Copy-Item -Path $sourceDllPath -Destination $destDllPath -Force +Write-Host "已复制$sourceDllPath 到$destDllPath" + +# 复制pdb文件到包结构中 +$targetPdbName = [System.IO.Path]::ChangeExtension($targetDllName, ".pdb") +$sourcePdbPath = Join-Path $output $targetPdbName +$destPdbPath = Join-Path $libDir $targetPdbName +if (Test-Path $sourcePdbPath) { + Copy-Item -Path $sourcePdbPath -Destination $destPdbPath -Force + Write-Host "已复制$sourcePdbPath 到$destPdbPath" +} + +# 复制xml文件到包结构中 +$targetXmlName = [System.IO.Path]::ChangeExtension($targetDllName, ".xml") +$sourceXmlPath = Join-Path $output $targetXmlName +$destXmlPath = Join-Path $libDir $targetXmlName +if (Test-Path $sourceXmlPath) { + Copy-Item -Path $sourceXmlPath -Destination $destXmlPath -Force + Write-Host "已复制$sourceXmlPath 到$destXmlPath" +} + +# 复制图标文件到包结构根目录 +$sourceIconPath = Join-Path $output $iconFileName +$destIconPath = Join-Path $tempDir $iconFileName +if (Test-Path $sourceIconPath) { + Copy-Item -Path $sourceIconPath -Destination $destIconPath -Force + Write-Host "已复制图标文件到包结构: $destIconPath" +} else { + Write-Host "警告: 在输出目录中找不到图标文件 $sourceIconPath" -ForegroundColor Yellow +} + +# 创建[Content_Types].xml文件(有效nupkg必需) +$contentTypesPath = Join-Path $tempDir "[Content_Types].xml" +# 使用-LiteralPath参数避免方括号被解释为通配符 +Set-Content -LiteralPath $contentTypesPath -Value "" +Write-Host "已在 $contentTypesPath 创建[Content_Types].xml" + +# 复制nuspec文件到包结构根目录 +$sourceNuspecPath = Join-Path $output "$packageId.nuspec" +$destNuspecPath = Join-Path $tempDir "$packageId.nuspec" +if (Test-Path $sourceNuspecPath) { + Copy-Item -Path $sourceNuspecPath -Destination $destNuspecPath -Force + Write-Host "已复制nuspec文件到包结构: $destNuspecPath" +} else { + Write-Host "警告: 找不到nuspec文件 $sourceNuspecPath" -ForegroundColor Yellow +} + +# 创建zip文件并将其重命名为nupkg +$zipPath = Join-Path $output "temp_manual.zip" + +# 清理任何现有文件 +if (Test-Path $zipPath) { + Remove-Item -Path $zipPath -Force + Write-Host "已移除现有的zip文件" +} +if (Test-Path $nupkgFilePath) { + Remove-Item -Path $nupkgFilePath -Force + Write-Host "已移除现有的nupkg文件" +} + +Write-Host "从$tempDir\* 创建zip归档到$zipPath..." +Compress-Archive -Path "$tempDir\*" -DestinationPath $zipPath -Force + +if (Test-Path $zipPath) { + Write-Host "正在将$zipPath 重命名为 $nupkgFilePath..." + Rename-Item -Path $zipPath -NewName $nupkgFileName -Force + + if (Test-Path $nupkgFilePath) { + $nupkgFile = Get-Item $nupkgFilePath + Write-Host "✅ 成功创建包: $($nupkgFile.FullName)" + Write-Host "包大小: $([math]::Round($nupkgFile.Length / 1KB, 2)) KB" + } +} + +# 清理临时文件夹 +Remove-Item -Path $tempDir -Recurse -Force +Write-Host "已清理临时文件夹" + +# 检查包文件是否存在 +if (Test-Path $nupkgFilePath) { + $nupkgFile = Get-Item $nupkgFilePath + Write-Host "找到包文件: $($nupkgFile.FullName)" + Write-Host "4. 正在发布包到仓库..." + + # 使用curl直接发布到HTTP仓库 + Write-Host "使用curl直接发布到HTTP仓库..." + + # 构建curl命令 + $curlCommand = "curl.exe -X PUT -u $key -F package=@$nupkgFilePath $server" + Write-Host "正在执行: $curlCommand" + + # 执行curl命令(使用curl.exe避免PowerShell别名冲突) + & curl.exe -X PUT -u $key -F package=@$nupkgFilePath $server + + if ($LASTEXITCODE -eq 0) { + Write-Host "✅ 成功: 包发布成功" -ForegroundColor Green + Write-Host "包ID: $packageId" + Write-Host "版本: $version" + Write-Host "标题: $title" + Write-Host "作者: $authors" + Write-Host "所有者: $owners" + Write-Host "描述: $description" + Write-Host "标签: $tagsString" + Write-Host "仓库: $server" + } else { + Write-Host "❌ 错误: 包创建成功但发布失败" -ForegroundColor Red + Write-Host "包文件位置: $($nupkgFile.FullName)" + Write-Host " +您可以尝试手动发布(使用curl命令):" + Write-Host "curl -X PUT -u admin:admin -F \"package=@$($nupkgFile.FullName)\" $server" + Write-Host " +或者直接在项目中使用创建的包文件" + } +} else { + Write-Host "❌ 错误: 未创建NuGet包" -ForegroundColor Red + Write-Host "请检查dotnet CLI是否正确配置" + Write-Host "您可以尝试使用Output目录中的文件手动创建包" +} + +# 最终清理 +Write-Host "正在执行最终清理.." +if (Test-Path "$output\Temp.csproj") { + Remove-Item -Path "$output\Temp.csproj" -Force + Write-Host "已移除Temp.csproj" +} + +# 删除我们在Output目录创建的NuGet.Config文件 +if (Test-Path $localNugetConfigPath) { + Remove-Item -Path $localNugetConfigPath -Force + Write-Host "已删除临时创建的NuGet.Config" +} + +Write-Host "发布过程完成" \ No newline at end of file