我目前使用App_Code文件夹为我的所有类,对我(现在)它似乎工作得很好.
然而,我一直在考虑切换到我的解决方案中的类库项目而不是App_Code文件夹.谁能告诉我这样做的利弊?
我有一个想法是关于测试我的网络应用程序.如果我使用类库,每次我想调整/测试时是否必须编译它?显然在App_Code文件夹中我没有必要,因为所有的Classes都是在运行时编译的.
我们在生产服务器上有一个非常古老的Web服务,我应用了非常小的更新.项目中的所有内容都是
App_Code folder
IService.cs
Service.cs
Bin folder
a few other dll's
Service.svc
web.config
Run Code Online (Sandbox Code Playgroud)
我所做的就是做一些改变Service.cs.在服务器上,结构是:
Bin folder
App_Code.dll
other dll's
PrecompiledApp.config
Service.svc
Web.config
Run Code Online (Sandbox Code Playgroud)
我真正想要的是换掉那个App_Code dll.使用ILSpy,我确认它只包含这两个.cs文件.但是,当我在VS2013中构建/发布/应用任何应用程序时,我无法创建它来创建我需要的App_Code.dll.我一整天都在研究这个问题,并没有找到解决方案.很明显,我不了解这些旧服务是如何运作的.有人能指出我正确的方向吗?
我正在开发中运行ASP.NET 3.5 Web应用程序。开发意味着我需要相当频繁地修改App_Code。当我将更新的.cs文件上传到App_Code时,在下一页加载时,出现以下错误:
The assembly 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET
Files\root\a18f28ce\a6daf424\App_Code.dll' is already loaded in another appdomain.
Setting <deployment retail="true" /> in machine.config can help solve this issue.
Run Code Online (Sandbox Code Playgroud)
在停止并启动应用程序池之前,不会加载任何页面。停止和启动应用程序池将清除错误,并且App_Code中的更改将出现。
在同一台服务器上还运行着其他网站,但是每个网站都在自己的应用程序池中。该站点是其应用程序池中唯一的一个站点(集成了v2.0,与其他应用程序池一样)。
这曾经没有发生过。更新App_Code时,我会停顿几秒钟,然后应用程序将按预期执行。我认为它是在自动回收应用程序池。似乎不再发生这种情况了,为每个更改停止/启动应用程序池很痛苦。
我不想将Retail设置为true,因为这会影响我需要的跟踪输出,自定义错误和调试功能。
有什么建议么?谢谢!
使用VS2008,我试图从添加 - >文件夹 - >添加ASP_NET文件夹添加App_Code文件夹.
App_Code文件夹选项是预期的但是......它被禁用了!?
我很确定我正在使用WebSite项目(而不是Web应用程序),因为我可以添加所有其他ASP_NET文件夹(App_Data - App_themes等),也因为我的my-code中没有控件声明(而不是Web应用程序,其中您有部分类与控件声明和eventHandlers等).事实是,如果它不是一个网站项目,为什么我可以添加其他ASP_NET文件夹?而且 - 为什么我没有获得任何带有控件声明等的设计器文件?这是VS2005中常用的方式.
如果我继续将App_Code文件夹自己添加为普通文件夹,它会获取ASP_NET App_Code文件夹的图标 - 所以它似乎工作正常.
它仍然困扰着我,因为我无法理解为什么首先禁用opion.
任何线索为什么会发生这种情况?
编辑:我正在尝试创建一个新的网站,我只获得了Web应用程序模板,所以我怀疑我是否能够创建一个网站.这里有点困惑!
在vs2008我可以设置App_Code文件夹,但在vs2010我不能这样做,这就是为什么我把我的数据集和类'放到App_Data文件夹.要么我不知道App_Data文件夹是否安全?有什么建议?
谢谢
我有一个网站(不是网络应用程序),它有一个default.aspx和default.aspx.cs。它有一个App_Code包含类的文件夹A。所以default.aspx.cs。好像:
namespace test1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
和班级A:
namespace test1
{
public class A
{
_Default mDefaultRef;
public pageLogicIndividual(_Default defaultRef)
{
mDefaultRef = defaultRef;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以A在_Default. 例如。如果我键入test1.,在课堂上工作时_Default,IntelliSense 将显示两个类。但是如果我test1.在课堂上打字,AIntelliSense 只会显示A。为什么我不能用_Default的A?
错误:命名空间中不存在类型或命名空间名称(您是否缺少程序集引用)
编辑:我会尽力澄清。在处理.csclass_Default …
我创建了一个名为MyMasterPage的MasterPage.
public partial class MyMasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我还在app_code中创建了一个名为Class1的类:
public class Class1
{
public Class1()
{
MyMasterPage m;
}
}
Run Code Online (Sandbox Code Playgroud)
在Class1中我想引用MyMasterPage但是我得到了一个编译器警告:
The type or namespace name 'MyMasterPage' could not be found (are you missing a using directive or an assembly reference?)
Run Code Online (Sandbox Code Playgroud)
为了让它工作,我需要添加什么代码?
这些类在文件夹中,如下所示:
在向App_Code添加两个语言代码文件(即C#和VB.NET)时出错
Run Code Online (Sandbox Code Playgroud)The files ... file names ... use a different language, which is not allowed since they need to be compiled together.
有没有办法添加两个不同的语言文件?
我在App_Code目录中使用声明性帮助器时遇到问题.我为我的视图创建了一个基础webviewpage,其中包含我的本地化方法.我还有一组用于我的助手的枚举,它围绕着CSS名称.
例如,DataRole是一个枚举,指的是允许显示的CSS类,而GetStr是我的基类打印标签本地化值的方法:
@helper ReadOnlyColumns(DataRole role, string label, string contents)
{
<div class="@role">@GetStr(label)</div>
}
Run Code Online (Sandbox Code Playgroud)
我的web.config具有基页类型的定义,以及要包含的正确名称空间.这些设置适用于不在App_Code目录中的视图.
有没有人有任何想法如何使App_Code目录工作?我应该把web.config放在里面吗?我很茫然.
我知道你可以做@implements和@using,这很有效.但我正在努力为我们的软件奠定基础,并且不觉得应该包含将在我们编写的每个页面上使用的内容.
编辑,这是我在root中的web.config设置,以及每个views目录:
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="Company.Web.BaseWebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="Company.Web" />
<add namespace="Company.Web.Enums" />
</namespaces>
</pages>
</system.web.webPages.razor>
Run Code Online (Sandbox Code Playgroud)
谢谢,
布拉德
我有一个ascx,我想从App_Code中的类加载和转换.我无法从App_Code类开始工作,尽管我可以从aspx页面开始工作.
ASPX页面技术可以正常使用以下代码:
pc = LoadControl("enquirycapture.ascx");
((ASP.enquirycapture_ascx)pc).CustomProperty = customObject;
Run Code Online (Sandbox Code Playgroud)
(注意:我在aspx页面中有以下内容:)
<%@ Reference VirtualPath="~/enquirycapture.ascx" %>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从App_Code类中转换控件时,它无法"看到"ascx类,因此我无法强制转换为设置自定义属性(我可以加载它,但不能转换它) .我不知道如何从App_Code类中复制<%Reference ...>的东西.任何人都知道如何从App_Code类中引用(并因此强制转换)我的ascx?谢谢.