我可以安全地删除对 .pdb 文件的引用吗?
Can I safely delete references to .pdb files?
我正在使用 ASP.NET Core 5.0,因为它是不久前推出的,今天我发现了一些奇怪的事情。
我为我的软件制作了一个安装程序,它会自动过滤掉进入我的发布版本的每个 .pdb 文件。一种从未引起问题的机制。
但是新的.NET 5.0 runtime好像有问题,IIS报错找不到文件runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.pdb.
我想知道为什么缺少调试符号会成为发布版本(或任何版本)的问题并进行了一些研究。我发现有问题的文件是 MyProject.deps.json
中的条目
"Microsoft.Data.SqlClient.SNI.runtime/2.0.1": {
"runtimeTargets": {
"runtimes/win-arm/native/Microsoft.Data.SqlClient.SNI.dll": {
"rid": "win-arm",
"assetType": "native",
"fileVersion": "2.0.1.0"
},
"runtimes/win-arm/native/Microsoft.Data.SqlClient.SNI.pdb": {
"rid": "win-arm",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "2.0.1.0"
},
"runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.pdb": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "2.0.1.0"
},
"runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.pdb": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "2.0.1.0"
},
"runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.pdb": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "0.0.0.0"
}
}
},
如你所见,里面有4个.pdb文件。我尝试删除导致问题的一个条目,然后砰的一声……现在一切正常。只需将 .pdb 文件添加到文件夹中也可以解决问题。所以我已经自己解决了实际问题。
我的问题是:我能否安全地从 .deps.json 中删除这些条目,否则可能会导致问题?
这可能是微软的错误吗?这些条目是不小心滑进去的吗?
从 net core framework 3.0 开始,它们是必需的(应用程序在某些情况下会失败)。
库以非正统的方式使用这些 PDB,以生成当前正常工作所需的堆栈跟踪和信息。
但是,在 Native libraries not loaded in C# interactive 中,似乎对于全新的客户端,这些依赖项应该消失,因此不应再发布。
但是,Unable to load DLL 'Microsoft.Data.SqlClient.SNI.x86.dll' and Microsoft.Data.SqlClient.SNI not deployed along with WebForms 其他人也有问题,特别是在云上部署时,我们所有的 net-5 项目都将它们包含在它们的清单中。这可能是由于 Entity Framework 引用了旧版本的客户端。
我正在使用 ASP.NET Core 5.0,因为它是不久前推出的,今天我发现了一些奇怪的事情。 我为我的软件制作了一个安装程序,它会自动过滤掉进入我的发布版本的每个 .pdb 文件。一种从未引起问题的机制。
但是新的.NET 5.0 runtime好像有问题,IIS报错找不到文件runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.pdb.
我想知道为什么缺少调试符号会成为发布版本(或任何版本)的问题并进行了一些研究。我发现有问题的文件是 MyProject.deps.json
中的条目"Microsoft.Data.SqlClient.SNI.runtime/2.0.1": {
"runtimeTargets": {
"runtimes/win-arm/native/Microsoft.Data.SqlClient.SNI.dll": {
"rid": "win-arm",
"assetType": "native",
"fileVersion": "2.0.1.0"
},
"runtimes/win-arm/native/Microsoft.Data.SqlClient.SNI.pdb": {
"rid": "win-arm",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.dll": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "2.0.1.0"
},
"runtimes/win-arm64/native/Microsoft.Data.SqlClient.SNI.pdb": {
"rid": "win-arm64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.dll": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "2.0.1.0"
},
"runtimes/win-x64/native/Microsoft.Data.SqlClient.SNI.pdb": {
"rid": "win-x64",
"assetType": "native",
"fileVersion": "0.0.0.0"
},
"runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.dll": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "2.0.1.0"
},
"runtimes/win-x86/native/Microsoft.Data.SqlClient.SNI.pdb": {
"rid": "win-x86",
"assetType": "native",
"fileVersion": "0.0.0.0"
}
}
},
如你所见,里面有4个.pdb文件。我尝试删除导致问题的一个条目,然后砰的一声……现在一切正常。只需将 .pdb 文件添加到文件夹中也可以解决问题。所以我已经自己解决了实际问题。
我的问题是:我能否安全地从 .deps.json 中删除这些条目,否则可能会导致问题? 这可能是微软的错误吗?这些条目是不小心滑进去的吗?
从 net core framework 3.0 开始,它们是必需的(应用程序在某些情况下会失败)。
库以非正统的方式使用这些 PDB,以生成当前正常工作所需的堆栈跟踪和信息。
但是,在 Native libraries not loaded in C# interactive 中,似乎对于全新的客户端,这些依赖项应该消失,因此不应再发布。
但是,Unable to load DLL 'Microsoft.Data.SqlClient.SNI.x86.dll' and Microsoft.Data.SqlClient.SNI not deployed along with WebForms 其他人也有问题,特别是在云上部署时,我们所有的 net-5 项目都将它们包含在它们的清单中。这可能是由于 Entity Framework 引用了旧版本的客户端。