#!/bin/bash # 获取版本号 version=$(grep -o '[^<]*' ThreatSource/ThreatSource.csproj | sed 's/\(.*\)<\/Version>/\1/') if [ -z "$version" ]; then echo "Error: Could not find version number in ThreatSource.csproj" exit 1 fi # 创建发布目录 package_name="ThreatSource-${version}" package_dir="publish/${package_name}" # 清理并创建目录结构 rm -rf "publish/${package_name}" mkdir -p "${package_dir}/lib" mkdir -p "${package_dir}/include" mkdir -p "${package_dir}/doc" echo "正在编译 Release 版本..." dotnet build ThreatSource/ThreatSource.csproj -c Release echo "正在生成文档..." docfx build docfx.json ./scripts/generate_pdf.sh echo "正在复制文件..." # 复制库文件到 lib 目录 cp ThreatSource/bin/Release/net8.0/ThreatSource.dll "${package_dir}/lib/" cp ThreatSource/bin/Release/net8.0/ThreatSource.xml "${package_dir}/lib/" cp ThreatSource/bin/Release/net8.0/ThreatSource.deps.json "${package_dir}/lib/" cp ThreatSource/bin/Release/net8.0/AirTransmission.dll "${package_dir}/lib/" cp ThreatSource/bin/Release/net8.0/AirTransmission.xml "${package_dir}/lib/" # 复制文档到 doc 目录 cp "publish/ThreatSource-Library.pdf" "${package_dir}/doc/ThreatSource-API-Doc.pdf" # 创建 README.txt cat > "${package_dir}/README.txt" << EOL 威胁源仿真库 v${version} 目录结构: lib/ 目录: - ThreatSource.dll - .NET 主库文件 - ThreatSource.xml - .NET API 文档(用于 IDE 智能提示) - ThreatSource.deps.json - .NET 依赖配置文件 - AirTransmission.dll - 大气传输计算库 - AirTransmission.xml - 大气传输计算库API文档文件 doc/ 目录: - ThreatSource-API-Doc.pdf - API 文档 使用说明: 1. C#/.NET 项目: - 将 lib 目录下的所有文件复制到项目目录 - 在 Visual Studio 中添加对 ThreatSource.dll 的引用 2. C++ 项目: - 将 lib 目录下的所有 DLL 文件复制到程序目录 - 在 Visual Studio 中添加对 ThreatSource.dll 的引用 - 创建 C++/CLI 项目并引用 ThreatSource.dll 详细使用说明请参考 doc 目录下的 API 文档。 EOL # 创建最终的 zip 包 cd publish zip -r "${package_name}.zip" "${package_name}" # 清理临时目录 rm -rf "${package_name}" echo "打包完成:publish/${package_name}.zip"