为什么代码契约会生成 MyAssembly.Contracts.pdb 文件?

发布于 2025-01-06 11:25:59 字数 329 浏览 0 评论 0原文

在项目属性的“代码合同”选项卡中将“合同引用程序集”设置为“生成”时,会在输出文件夹的“CodeContracts”子文件夹中创建两个附加文件(针对名为“MyAssembly”的程序集):

MyAssembly.Contracts.dll
MyAssembly.Contracts.pdb

第一个文件包含所有合同元数据,我了解其用途。我不明白的是为什么创建第二个文件 .pdb,以及合约元数据的使用者是否需要它(例如另一个解决方案中的代码合约本身、代码合约编辑器扩展等)。

如果我希望元数据的其他使用者能够正常工作,我是否还需要包含 .pdb,还是完全不需要?

When setting "Contract Reference Assembly" to "Build" in the Code Contracts tab of the project properties, two additional files are created (for an assembly named "MyAssembly") in the "CodeContracts" subfolder of the output folder:

MyAssembly.Contracts.dll
MyAssembly.Contracts.pdb

The first file contains all contract metadata and I understand its uses. What I don't understand is why the second file, the .pdb, is created, and whether it is needed by consumers of contract metadata (e.g. Code Contracts itself in another solution, the Code Contracts Editor Extensions, etc).

If I want other consumers of the metadata to work correctly, do I need to include the .pdb as well, or is it completely unneeded?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁的年少不轻狂 2025-01-13 11:25:59

我已在代码契约 MSDN 论坛中发布了这个问题,并从 Manuel Fahndrich 那里得到了答案。

静态检查器使用生成的 pdb 文件来指向源代码中违反的约定(PDB 用于 IL -> 源代码映射)。这仅对编写合约的人有用,因为如果没有源代码,合约 pdb 就没有什么用处,因此无需将 .Contracts.pdb 发送给第三方,只需将 发送给第三方。 Contracts.dll。

I've posted this question in the Code Contracts MSDN Forum and got an answer from Manuel Fahndrich.

The static checker uses the generated pdb file to point to the contract that was violated in the source code (the PDB is used for IL -> source code mapping). This is only useful to whomever wrote the contract, since without the source code the contract pdb has little use, so there's no need to ship the .Contracts.pdb to third parties, only the .Contracts.dll.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文