更改WebApi应用程序的构建输出目录
我是一个从事大型应用程序的团队的一员。 我是这个团队的新成员,正在构建一个新的应用程序。 作为此过程的一部分,我创建了一个WebApi应用程序,它将公开一些HTTP端点,通过它我将检索有关该应用程序的信息。
由于条件需要很长时间才能解释,我想让WebApi项目构建在另一个目录中,特别是..\bin\Server\Debug\
因为这是应用程序构建的大部分其他部分至。 我不打扰,除了该应用程序试图使用基于工作目录找到的文件,这是我的WebApi应用程序当前错误。
我尝试在项目设置中更改它,现在我收到此错误:
到目前为止,我的谷歌搜索引起了一些帮助。 有谁知道如何解决这个问题?
尝试在配置中添加运行时探测路径:
除了上面的步骤并摆脱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文件夹中
- DelegatingHandler用于WebApi中的响应
- Web API 2 / MVC 5:属性路由将参数作为查询字符串传递,以在同一控制器上定位不同的操作
- 使用EF和WebApi将父/子对象序列化
- SignalR hub中的简单Injector per-web-api-request依赖
- Azure WebSites或Azure云服务上的MVC4 API :’System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption’
- WebApi 2 POST使用单个字符串参数而不是wokring
- 将WebSockets与ASP.NET Web API一起使用
- 无法在Web API中正确获取文件扩展名
- 如何从C#中的Web Api方法正确获取字节数组?