如何将非SDK格式的旧版.NET Framework项目的调试符号源发布到JFrog?
嗨,我这就给你一步步捋清楚怎么把这类旧项目的调试符号传到JFrog上。先看看你提供的这个项目配置片段:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>portable</DebugType> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> </PropertyGroup>
接下来按这几步操作就行:
第一步,先确认本地符号生成正常
你已经把<DebugType>设为portable了,这个选择很对——portable格式的pdb跨平台兼容,JFrog也能完美识别。先本地构建一次Release版本,去bin\Release目录下看看,确保对应的.pdb文件和你的程序集(.dll/.exe)一起生成了,这是后续上传的基础。第二步,配置JFrog CLI工具
非SDK项目没法用新版.NET的dotnet命令直接操作,咱们用JFrog官方的CLI工具就好办了。先把这个CLI装到本地,装好后打开命令行,输入jf c add来配置你的JFrog仓库信息:输入仓库地址、登录用的用户名和密码(或者API密钥),给这个配置起个好记的名字,之后上传的时候就能直接用了。第三步,执行上传操作
因为非SDK项目没有自带的发布流程,咱们直接用命令行或者写个简单脚本就能搞定:
比如用PowerShell的话,先切换到项目的Release输出目录:cd .\bin\Release\ # 上传程序集和对应的pdb文件到JFrog仓库 jf rt upload "*.dll" 你的仓库名/项目存储路径/ --recursive=false jf rt upload "*.pdb" 你的仓库名/项目存储路径/ --recursive=false要是你习惯用批处理,把上面的命令改成批处理格式就行,注意替换成你自己的仓库名和存储路径。如果你的JFrog是NuGet类型仓库,那得先把程序集和pdb打包成NuGet包,用
nuget pack命令就行:nuget pack 你的项目文件.csproj -Properties Configuration=Release -IncludeReferencedProjects打包好nupkg之后,再用
jf rt upload把包传到NuGet仓库,或者用jf nuget push命令更直接。第四步,验证上传结果
上传完成后,登录JFrog的Web后台,找到对应的仓库路径,看看你的.dll和.pdb是不是都传上去了。点一下pdb文件,确认JFrog能正常解析它的符号信息——一般portable格式的pdb都会被自动识别。
最后再提个小提醒:上传前确认你用的JFrog账号有对应仓库的上传权限,不然会被拒绝哦。
备注:内容来源于stack exchange,提问作者dododo

