更改WebApi应用程序的构建输出目录

我是一个从事大型应用程序的团队的一员。 我是这个团队的新成员,正在构建一个新的应用程序。 作为此过程的一部分,我创建了一个WebApi应用程序,它将公开一些HTTP端点,通过它我将检索有关该应用程序的信息。

由于条件需要很长时间才能解释,我想让WebApi项目构建在另一个目录中,特别是..\bin\Server\Debug\因为这是应用程序构建的大部分其他部分至。 我不打扰,除了该应用程序试图使用基于工作目录找到的文件,这是我的WebApi应用程序当前错误。

我尝试在项目设置中更改它,现在我收到此错误: 无法加载WebApiApplication类型

到目前为止,我的谷歌搜索引起了一些帮助。 有谁知道如何解决这个问题?

尝试在配置中添加运行时探测路径:

        

除了上面的步骤并摆脱globa.asax错误。 打开Global.asax文件的标记并在顶部添加跟随行。

 <%@ Assembly Name="" %> 

现在你将开始收到System.web或BindingProvider未找到的错误等。有一些奇怪的解决方法,它开始在汇编标签下添加程序集。

             

你会得到更多这样的错误,但这会让你前进。

原因 :我看到的问题是有一个选项来更改输出路径,但Asp.net正在进行动态编译。 当您尝试运行网站时,错误与编译相关的原因。 某处run time compilation只在\bin文件夹中查找,这就是我们必须指定项目引用的每个程序集的原因。

更新 – 很遗憾,您无法更改bin目录。 看完所有选项并挖掘后发现Asp.net web项目的bin文件夹不是普通的二进制输出文件夹。 它是一个共享代码文件夹 ,直接在项目中引用二进制文件。

当Web服务器收到Asp.net应用程序的第一个请求时,将编译二进制文件。 并且bin文件夹仅用作共享二进制引用文件夹而不是实际的输出文件夹/目录。 Asp.net中 On-the-fly 编译的实际输出文件夹默认设置为%SystemRoot%\Microsoft.NET\Framework\\Temporary ASP.NET Files您可以从compilation标签属性[tempDirectory][3]更改[tempDirectory][3]在你的web.config

经过所有这些研究后,我得出结论,由于Asp.net网站项目模板,出现了从project -> properties -> Build -> Bin更改目录的选项。 这为用户提供了与任何其他项目相同的外观。 但asp.net网站的function仍然相同。 Bin文件夹仍然可以像在Asp.net的旧website模板中一样工作。

您可以尝试使用after build目标复制dll。 首先将输出路径更改回原来之前更改的路径。 然后在项目文件中添加这样的代码。

      

这会将内置的dll放入destinationfolder中指定的文件夹中。 我通常将它用于类库,但我不明白为什么它不能用于web api项目

如果您愿意,可以查看我的博客文章。

http://torontoprogrammers.blogspot.com/2014/11/msbuild-targets-and-tasks.html

由于IIS安全限制,您无法更改asp.net应用程序的输出目录,这就是它无法正常工作的原因。

如果您尝试通过DI管理dll,请将所有其他卫星dll复制到主asp.net应用程序的bin文件夹中