Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Visual Studio 2019中的多解决方案环境中转到源代码_C#_Visual Studio_Visual Studio 2019 - Fatal编程技术网

C# 在Visual Studio 2019中的多解决方案环境中转到源代码

C# 在Visual Studio 2019中的多解决方案环境中转到源代码,c#,visual-studio,visual-studio-2019,C#,Visual Studio,Visual Studio 2019,我们有这样一个场景: 我们有大约100个解决方案,每个方案包含10个项目。 每个解决方案都将其人工制品(即10个DLL)复制到一个共享文件夹中,如C:\code/assemblies。 如果我为功能X开发一些东西,我会打开SolutionX。 所有解决方案/项目的源代码都位于单个C:\code中的本地 在调试期间,当在项目Y中实现方法/类/任何东西时,它会打开相应的文件(这很好)。因此,必须有关于如何找到来源的可用信息 但是在开发时,我无法导航到实现,例如使用F12(“转到定义”),而只能从元数

我们有这样一个场景:

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

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

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

所以现在我打开一个VisualStudio代码,打开包含源代码的文件夹,然后执行“在文件中搜索”

还有更好的主意吗

注意:不允许使用Resharper。也不能和波斯夏普玩得很好


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

我在旧项目中也做过类似的工作

您可以在Visual Studio 2019中使用符号。简单的步骤可以是:

A.为项目生成符号:

  • 在解决方案资源管理器中,选择项目

  • 选择属性图标(或按Alt+Enter)

  • 在侧窗格中,选择构建

  • 在配置列表中,选择调试或发布

  • 选择高级按钮

  • 在调试信息列表中,选择完整、仅Pdb或便携式

  • 有关更多信息,请参阅:

    B.在Visual Studio中使用符号:

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

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

    • 要使用Microsoft Symbol服务器或NuGet.org Symbol服务器,请选中复选框

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

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

  • 有关更多详细信息,请参阅:


    我认为您应该分析项目相关性(例如,使用)并将您的项目集中在较少的解决方案中

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

  • 查看引用的二进制文件的源代码
  • 导航到源,然后在位编辑它们
  • 实现方案(1) 在Visual Studio 2019中,使用内置反编译器帮助您导航到解决方案之外的代码。截至2020年5月,这是一个实验性特征。默认情况下,这是禁用的,您应该启用它。一旦启用,F12导航将反编译并允许您查看源代码

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

    如果您使用的是visual studio 2017(或更少),那么Telerik Just Decompile插件(免费)也可以实现同样的效果。检查功能

    要实现方案(2): 您应该引用源文件而不是二进制文件,因为引用二进制文件不会获得自然的就地编辑。不管你选择什么解决方案,总会有一些警告。可以使用Visual studio中的“添加为链接”功能来引用源代码,其中源代码属于一个解决方案,并且可以在所有其他解决方案中作为链接引用(类似于windows快捷方式)。(). 如果您正在引用源,则需要删除二进制引用

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

    结论
    从最佳实践的角度来看,您要么必须引用二进制文件而不允许对其进行编辑(要么)允许源引用并就地编辑。但这完全取决于你想要实现什么

    看起来你有一个用例,其中包含所有项目的解决方案。@Wyck我承认这是一个解决方案。但我不确定这会不会成功。而且还涉及到一些生成的代码,构建过程基本上是通过一个额外的程序来管理依赖项来完成的(运行大约需要15分钟)。所以我绝对不想建立所有的项目。为了只为解决方案X构建项目,我必须为每个解决方案创建一个SolutionX+All。这不容易维护。听起来你需要做一些组件级的单元测试来减少需要调试的范围。我通过单元测试来处理这个场景。如果模块经过良好测试,我就不需要在生产中调试它。如果我在生产中确定了某个组件的故障条件,那么我将重新访问该组件的测试套件,以重现错误,而不是在系统级别调试生产应用程序。如果所调用的模块级API已经过正确的单元测试,则不需要跨模块进行调试。我承认这可能不是你想要的答案。谢谢你详细的回答。PDB已设置为“满”。在调试期间,符号也已出现。我想要的是,我可以在不进行调试的时候,即在编写代码的时候,去实现。这甚至不起作用