ThreatSourceLibaray/scripts/pack_all.sh

80 lines
2.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 获取版本号
version=$(grep -o '<Version>[^<]*</Version>' ThreatSource/ThreatSource.csproj | sed 's/<Version>\(.*\)<\/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 ThreatSourceNative/bin/Release/x64/ThreatSourceNative.dll "${package_dir}/lib/"
# 复制头文件到 include 目录
cp ThreatSourceNative/include/threat_source.h "${package_dir}/include/"
# 复制文档到 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 依赖配置文件
- ThreatSourceNative.dll - C++ 接口库
include/ 目录:
- threat_source.h - C++ 头文件
doc/ 目录:
- ThreatSource-API-Doc.pdf - API 文档
使用说明:
1. C#/.NET 项目:
- 将 lib 目录下的所有文件复制到项目目录
- 在 Visual Studio 中添加对 ThreatSource.dll 的引用
2. C++ 项目:
- 将 lib 目录下的所有 DLL 文件复制到程序目录
- 将 include/threat_source.h 添加到项目中
- 包含头文件并使用 C 风格接口
详细使用说明请参考 doc 目录下的 API 文档。
EOL
# 创建最终的 zip 包
cd publish
zip -r "${package_name}.zip" "${package_name}"
# 清理临时目录
rm -rf "${package_name}"
echo "打包完成publish/${package_name}.zip"