繁体   English   中英

Go 在 Visual Studio 2019 中的多解决方案环境中获取资源

[英]Go to source in a multi solution enviroment in Visual Studio 2019

我们有这样一个场景:

我们有大约 100 个解决方案,每个解决方案包含 10 个项目。 每个解决方案都将其人工制品(即 10 个 dll)复制到一个共享的单个文件夹中,例如C:\code/assemblies 如果我为功能 X 开发一些东西,我会打开 SolutionX。 所有解决方案/项目的来源都在单个Monorepo C:\code中。

在调试过程中,当项目 Y 中实现了方法/类/任何东西时,它会打开相应的文件(这很好)。 因此,必须有可用的信息如何到达源头。

但是在开发时,我无法导航到实现,例如使用 F12(“转到定义”),而只能从元数据中获取签名。 我希望在调试期间拥有相同的体验。

所以现在我打开一个 Visual Studio Code,打开包含源代码的文件夹并执行“搜索文件”。

有更好的想法吗?

Nb Resharper 不是一个允许的选项。 也不能很好地与 Postsharp 配合使用。

注意,我不知道它是否重要,但除了一个解决方案之外的所有解决方案都启动一个外部程序(shell),因为除了一个解决方案之外的所有解决方案都只包含 dll。

我在旧项目中做过类似的事情。

您可以将Symbol与 Visual Studio 2019 一起使用。简单的步骤可以是:

A. 为项目生成符号:

  1. 在解决方案资源管理器中,select 项目。

  2. Select 属性图标(或按 Alt+Enter)。

  3. 在侧窗格中,选择Build

  4. 在 Configuration 列表中,选择DebugRelease

  5. Select高级按钮。

  6. 在调试信息列表中,选择完整、仅 Pdb 或可移植。

在此处输入图像描述

更多信息请参考:

在 Visual Studio 中设置调试和发布配置

发布符号以进行调试

B. 在 Visual Studio 中使用符号:

  1. 在 Visual Studio 中,打开工具 > 选项 > 调试 > 符号(或调试 > 选项 > 符号)。

  2. 在符号文件 (.pdb) 位置下,

    • 要使用 Microsoft 符号服务器或 NuGet.org 符号服务器,请选中 select 复选框。

    • 要添加新的符号服务器位置,

    Select 工具栏中的 + 符号。 在文本字段中键入符号服务器的 URL (http)、网络共享或本地路径或符号位置。 语句完成可帮助您找到正确的格式。 工具 - 选项 - 调试 - 符号页面

在此处输入图像描述

更多详情请参考:

配置符号位置和加载选项

我认为您应该分析项目依赖关系(例如使用https://www.ndepend.com/docs/visual-studio-dependency-graph )并将您的项目集群在较少的解决方案中

编辑:我正在根据您的评论编辑此答案。 我认为您正在寻找两个用例

  1. 查看引用的二进制文件的源代码
  2. 导航到源,然后就地编辑它们

实现选项 (1)

在 Visual Studio 2019 中,使用内置的反编译器来帮助您导航到解决方案之外的代码。 自 2020 年 5 月起,这是一项实验性功能。默认情况下,此功能已禁用,您应该启用它。 启用后,F12 导航将反编译并允许您查看源代码。

在此处输入图像描述

另一方面,你越放松编译,反编译就越好。 这意味着,您可以关闭优化(如果有)。 这与符号生成选项无关。

如果您使用的是visual studio 2017(或)以下版本,则可以通过Telerik Just Decompile 插件(免费)来实现。 检查功能在选项卡中查看反编译代码

实现选项 (2):

您应该引用源文件而不是二进制文件,因为您不会通过引用二进制文件获得自然的就地编辑。 无论您选择哪种解决方案,总会有一些警告。 可以使用 Visual Studio 中的“添加为链接”功能来引用源代码,其中源代码属于一个解决方案,并且可以在所有其他解决方案中作为链接引用(类似于 windows 快捷方式)。 https://andrewlock.net/including-linked-files-from-outside-the-project-directory-in-asp-net-core/ )。 如果要引用源,则需要删除二进制引用。

您还必须从架构的角度来决定这将如何改变人们开发和提交代码的方式。 引用二进制文件的目的是确保不为方便而对其进行编辑,但这完全取决于开发团队的性质。

结论

从最佳实践的角度来看,您要么必须引用二进制文件并且不允许编辑它们(或者)您允许源引用并就地编辑。 但这完全取决于您想要实现的目标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM