重命名 ASP.NET 项目文件后,无法在 IIS Express 中将 OWIN 启动 class 更改为 运行

Can't get the OWIN Startup class to run in IIS Express after renaming ASP.NET project file

我遇到了一种情况,我需要在基于 OWIN 的 WebAPI 网站中更改解决方案和项目名称。在此更改之前一切正常,据我所知重命名成功的原因如下:

  1. 解决方案构建良好,我的所有单元测试 运行 在本地和我们的 TeamCity 构建服务器上都成功
  2. 应用程序 运行 在我们的测试服务器(完整的 IIS 8)和生产环境(也是完整的 IIS 8)上运行良好

我的问题是,在重命名之后,当我在 IIS Express 中 运行 执行此操作时,无论我尝试什么,我都无法执行 Startup class。我怀疑我的机器上有一些包含多个 Startup class 的缓存文件夹,因为在我们的测试环境中,我需要在开始工作之前删除所有使用以前名称的旧 DLL。

我知道 Startup 没有执行,因为我在其中有没有触发的断点(实际上没有启用,因为 VS 没有看到加载的符号):

这是我迄今为止尝试过的方法:

在我的例子中,我在 Startup.cs 中使用以下内容指定启动 class:

[assembly: OwinStartup(typeof(Startup))]

...但是,在我尝试重命名解决方案和项目之前,这一切都运行良好。我不认为这是一般的 IIS Express 问题,因为我可以在本地成功 运行 其他基于 OWIN 的解决方案(例如,我们对 IdentityServer3 的实现)而不会出现问题......尽管该解决方案没有'不需要任何名称更改。

使用 IIS Express 时是否有其他方面可能因更改解决方案或项目文件的名称而出错?

作为参考,我已经检查了以下可能的原因(没有任何运气): - OwinStartup not Starting ... Why? - OWIN Startup Class Missing - ASP.NET Temporary files cleanup - OwinStartup not firing

虽然我无法完全解释 为什么 这可以解决问题,但我可以通过将项目更改为构建到常规 bin/ 文件夹来解决此问题。

我很抱歉没有在我原来的问题中提到这一点,因为我认为它不相关,但我之前已经将我的 ASP.NET 项目更改为构建到 bin\Debugbin\Release 取决于配置。这似乎工作得很好,但在我更改项目名称后导致了这个问题。

我知道这是旧的,但只是想补充一点,我 运行 使用自定义模板来解决这个问题。就我而言,我有一个创业公司的工作解决方案,将其设为模板,但该模板不起作用。

一探究竟,是因为新项目的名字里有个space。所以添加

[assembly: OwinStartup(typeof(myProjectName.Startup))]

我现有的启动文件修复了它。