gpt4 book ai didi

c# - 有没有办法更改 .net mvc bin 目录位置?

转载 作者:可可西里 更新时间:2023-11-01 07:46:43 25 4
gpt4 key购买 nike

我有一个相当标准和简单的 MVC4 网站。

在根目录中我们有:bin、content、scripts、views。使用项目的 DLL 的默认设置,我们称它为“web.dll”,所有必要的额外内容都放在 bin 目录中。

不知何故,ASP.NET 开发服务器和 IIS7.5 都知道在托管站点时在 bin 文件夹中查找“web.dll”,如果不存在,它们会抛出错误:“无法加载类型 'CVD。 Web.MvcApplication'”。该错误的标准解决方案是直接构建到 bin 文件夹中,这对我不起作用,因为...

出于调试目的,我希望能够将调试和发布配置分别构建到 bin/Debug 和 bin/Release 中,然后部署两个目录,然后在 IIS、web.config 或全局中更改设置。 asax,或其他任何地方来选择是否应由服务器加载和执行调试或发布版本。

我一直没能找到这是否可能,或者 .net webapps 是否有一个愚蠢的硬编码规则说所有代码都必须位于 bin 目录中。

最佳答案

好的,借助 Sen Jacob 提供的几个链接和更多研究,我发现仅使用 web.config 就可以完成这一切。

首先,我们需要提供新路径并告知程序集名称,因为我们正在远离默认值:

<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="Something.Web" />
</assemblies>
</compilation>
</system.web>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin\debug" />
</assemblyBinding>
</runtime>
</configuration>

现在,出于某种原因,其他地方的人们建议指定 privatePath相对于 bin 目录(即 privatePath="debug" ),但在我的情况下,它必须相对于应用程序根目录(即如上所述)。不确定是 .net4 中的更改还是我缺少的其他配置设置;如果有人有更好的想法,请随时编辑/评论。

在此阶段,如果服务器找到文件并成功加载程序集和类,它将开始提示所有丢失的引用文件,我必须在 <add assembly="Something.Web" /> 旁边添加这些文件:

    <assemblies>
<add assembly="Something.Web" />
<add assembly="System.Web.Mvc" />
<add assembly="System.Web.Optimization" />
<add assembly="System.Web.Helpers" />
<add assembly="System.Web.WebPages" />
</assemblies>

根据我收集到的信息,它会在站点启动时重新编译程序集(不确定)。

资料来源: 1 2 3

关于c# - 有没有办法更改 .net mvc bin 目录位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13263002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com