【问题标题】:Can I safely delete references to .pdb files?我可以安全地删除对 .pdb 文件的引用吗?
【发布时间】:2021-03-15 08:10:49
【问题描述】:

我使用的是 ASP.NET Core 5.0,因为它是在不久前发布的,今天我发现了一些奇怪的东西。 我为我的软件制作了一个安装程序,它会自动过滤掉进入我的发布版本的每个 .pdb 文件。一种从未引起问题的机制。

但是新的.NET 5.0运行时好像有问题,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 中删除这些条目,还是会导致问题? 这可能是微软的错误吗?那些条目是不小心滑进去的吗?

【问题讨论】:

  • 这非常有趣。我无法想象删除这些条目可能会导致执行问题。删除它们应该完全没问题。对我来说,更大的困惑是,如果这是生产构建的结果,为什么它首先包含对 pdb 文件的引用?

标签: asp.net-core pdb-files .net-5 asp.net-core-5.0


【解决方案1】:

从 net core framework 3.0 开始,它们是必需的(应用程序在某些情况下会失败)。

库以非正统的方式使用这些 PDB 来生成堆栈跟踪和当前正常工作所需的信息。

但是,在Native libraries not loaded in C# interactive 中,似乎有了全新的客户端,这些依赖项应该会消失,因此不应再发布。

但是,Unable to load DLL 'Microsoft.Data.SqlClient.SNI.x86.dll'Microsoft.Data.SqlClient.SNI not deployed along with WebForms 其他人也有问题,尤其是在云上部署时,我们所有的 net-5 项目都将它们包含在清单中。这可能是由于实体框架引用了旧版本的客户端造成的。

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 2019-12-09
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 2020-12-09
    • 2013-09-26
    相关资源
    最近更新 更多