【问题标题】:What are the consequences of setting same output path for all configurations?为所有配置设置相同的输出路径会有什么后果?
【发布时间】:2015-07-23 08:34:42
【问题描述】:

为了在 Visual Studio 2013 中调试 Web API 项目,我必须将 Debug 配置 的输出路径设置为 bin\ (意味着文件最终在{ProjectName}\bin 相对于解决方案根文件夹)从一些答案here 中可以看出。

但现在我面临的问题是,我们在构建服务器设置的多个地方使用了路径 bin\{ConfigurationName}。我非常想统一 Debug 和其他 Visual Studio 配置的设置。

因此我的问题是:您是否知道将所有配置的输出文件夹统一为bin\,从而导致文件夹结构{ProjectName}\bin 的任何问题后果?

如果这样做,有什么方法可以在不更改 bin\Debug\ 的输出文件夹的情况下调试 Web API 项目?

【问题讨论】:

  • 只要您确保您的名称空间不冲突,我就看不到问题。我过去遇到的问题是,例如,当您的 MVC 和 API 项目中都有客户控制器时。
  • 一个潜在的问题可能是由 VS 仅编译已更改的文件引起的。如果编译符号尚未编译到未更改的程序集中,则可能无法调试。
  • @BDH 这是一个很好的观点!切换配置时要记住的重要事项。

标签: c# asp.net asp.net-mvc visual-studio asp.net-web-api


【解决方案1】:

无后果

默认情况下,项目构建存储在项目目录中,例如:

{Solution}/{Project}/obj/Debug/{Project}.dll    
{Solution}/{Project}/obj/Release/{Project}.dll

每个项目文件夹中每种构建类型的文件夹


如果你所有的二进制文件都输出到同一个目录,他们会

  • 在您的开发环境中运行时以相同方式链接
  • 以同样的方式解决依赖关系
  • 部署方式相同

结果将是目录结构

{Output Directory}/Debug/{Project}.dll    
{Output Directory}/Release/{Project}.dll    

IDE 是可定制的:

没有要求将项目构建保留在项目目录中。项目构建文件夹是配置默认值。 IDE 旨在让您在自己的舒适区工作。如果您希望对所有程序集进行分组,或者发现它可以解决问题,您可以随意更改此构建配置。


调试 Web-API 有问题?

您不必将输出路径更改为调试 Web API。将您的 Web-API 附加到 worker process

1) 在 VS Explorer 中点击您的 Web API 项目

2) 在 Visual Studio 菜单中单击 调试

3) 点击附加到进程...

4)点击/选择所有名为w3wp.exe

的进程

【讨论】:

  • 我已经澄清了这个问题,因为有一点误解。我希望答案大致相同:-)
  • @SørenBoisen,在回复之前,我想确定我理解正确。您想将所有配置合并到 bin` rather than having a distinct bin\Config` 文件夹中的同一目录中,以用于构建配置文件?
  • 是的,但仍然是每个项目,正如我试图在问题中澄清的那样 :-) 所以 - 无论配置如何,每个项目的输出都会转到该项目的 bin 文件夹。更清晰?
  • @SørenBoisen,对所有输出路径使用 bin/ 没有问题。由于您从不对同时构建调试和发布感兴趣(如果可能的话),活动构建将覆盖当前在 bin 文件夹中的一些文件。但这没问题——就像执行清理/构建一样。我不希望调试 b/c 有任何问题,.pdb 文件管理调试程序集跟踪。
  • 啊,是的,调试符号位于不同的文件中,所以不会造成问题。但是,在 System.Diagnostics.Debug 上使用方法将无法正常工作,直到我想更改/强制重新编译。但这只是一个混乱点,而不是一个真正的问题。太棒了,我的烦恼已经烟消云散了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
相关资源
最近更新 更多