使用ASP.NET 4.5,可以在运行时使用Assembly.Load()或AppDomain.CurrentDomain.Load()动态加载程序集.这可用于以模块的形式向正在运行的Web应用程序添加新功能,而无需重建甚至重新启动应用程序.
我想知道如何使用面向Core框架的新ASP.NET vNext(5.0?)来完成此操作.我知道这可以通过可用的完整框架System.AppDomain以及重载来完成Assembly.Load().当我改变目标Core框架时,我不再System.AppDomain可用并且Assembly.Load()变得有限.
有没有办法在ASP.NET 5.0 Core框架中获得这种动态模块化功能?
我正在尝试System.IO.Compression.ZipArchive在VS2015预览版的ASP.NET VNext类库中使用.我System.IO.Compression使用NuGet 添加了包,并将它作为aspnetcore50依赖项添加到我的project.json中.
当我尝试使用时ZipArchive,intellisense说在ASP.NET 5.0中不可用,但它在ASP.NET Core 5.0中可用.如果我使用顶部栏中的下拉菜单切换到使用ASP.NET Core,那么我的代码按预期工作,但是当我选择普通的ASP.NET时它不起作用.
我尝试在project.json中手动将其作为依赖项添加到aspnet50,但这并没有解决它.
我需要在Core CLR上使用完整的CLR,因为我需要AppDomain在运行时加载程序集,我相信Core CLR不支持这一点.
请有人解释一下这里发生了什么,也许可以指向一些文章或博客文章,告诉我如何解决这个问题.
更新:
我想这是一个更好的方法或措辞 - ZipArchive在aspnet50中没有,但是当我添加System.IO.CompressionNuGet包时,它在aspnetcore50中可用.为什么是这样?
我正在尝试使用ASP MVC 3网站获得HTML 5离线应用程序缓存.我得到的问题是,当我尝试在离线模式下导航到页面时,它不起作用.
我正在使用清单文件的操作,以便可以动态生成它,并在视图中指定Resonse.ContentType ="text/cache-manifest".
我已经在IIS本地托管了应用程序,所以我使用http://192.168.55.127/mywebsite/来访问它.
这是我正在使用的清晰视图.它使用剃刀视图引擎,有点乱(硬编码的URL等),而我试图弄清楚什么是错的.
@{
Layout = null;
Response.ContentType = "text/cache-manifest";
}
CACHE MANIFEST
# Version: @ViewBag.Version
CACHE:
#Script Files
@foreach(var jsFile in Url.GetJsFiles())
{
@string.Format("{0}{1}\r\n", "http://192.168.55.127", Url.Content(jsFile))
}
#Style Sheets
@foreach(var cssFile in Url.GetCssFiles())
{
@string.Format("{0}{1}\r\n", "http://192.168.55.127", Url.Content(cssFile))
}
#Images
@foreach(var imageFile in Url.GetImageFiles())
{
@string.Format("{0}{1}\r\n", "http://192.168.55.127", Url.Content(imageFile))
}
#HTML Pages
@string.Format("{0}{1}", "http://192.168.55.127", Url.Content("~/pages/master.htm"))
@string.Format("{0}{1}", "http://192.168.55.127", Url.Content("~/pages/home.htm"))
@string.Format("{0}{1}", "http://192.168.55.127", Url.Content("~/pages/options.htm"))
NETWORK:
*
Run Code Online (Sandbox Code Playgroud)
这导致如下路径:
http://192.168.55.127/mywebsite/scripts/Libs/jQuery.js
http://192.168.55.127/mywebsite/pages/home.htm
Run Code Online (Sandbox Code Playgroud)
这似乎很好.
我也使用完整路径引用了清单文件:
<html manifest="http://192.168.55.127/mywebsite/manifest">
Run Code Online (Sandbox Code Playgroud)
这似乎没问题,因为当我用chrome加载网站并观察开发者控制台时,它似乎缓存了所有文件而没有抛出任何错误.此外,如果我导航到http://192.168.55.127/mywebsite/manifest, 它会提供清单,因为我希望看到它.
该网站不使用普通导航,而是使用散列片段导航 …
我一直在玩monodroid(预览8980),我正在尝试创建一个可在Android,WP7和Silverlight上运行的应用程序.
我的计划是建立一个单一的核心类库,然后为每个将包含UI东西平台的一个单独的项目 - 这样一个MonoDroid的项目,一个用于WP7和SL之一,所有这些都将引用核心类库.
这个问题的主要问题是,可以在核心库中实现一些功能,这些功能在Silverlight上可以正常工作,但在WP7上却不行.我认为确保不会发生这种情况的最佳方法是将核心库作为Silverlight 3项目,因为这将是最低的共同点.
我现在面临的问题是我无法从monodroid项目中引用SL3库.我收到这个警告 - '警告2项目'TMCore'无法被引用.引用的项目针对不同的框架系列(Silverlight)
有任何想法吗?
在我的 dotnet core 2.0 应用程序中,我在某个时间点在不同的进程中(使用一些不同的参数)重新启动相同的应用程序。我希望能够以编程方式将当前的 Visual Studio (2017) 调试器附加到新进程。
这是一个如何在完整框架中完成的示例,但对于初学者来说,该Marshal.GetActiveObject方法似乎不存在。
在 dotnet core 2.0 中是否有不同的方法来实现这一点?或者只是不可能?
我的数据库中有两个表 - 类别和部门,它们都包含相同的列 - ID,名称和代码.
我可以使用Visual Studio 2008设计器创建一个新的实体模型并添加部门,它工作正常 - 我可以使用LINQ查询数据库,一切都很好.
当我更新模型并添加Category表时,生成的代码在我尝试编译时会抛出以下错误.
The type 'DBContexts.Category' already contains a definition for 'ID'
The type 'DBContexts.Category' already contains a definition for '_ID'
The type 'DBContexts.Category' already contains a definition for 'Name'
The type 'DBContexts.Category' already contains a definition for '_Name'
A partial method may not have multiple defining declarations
Run Code Online (Sandbox Code Playgroud)
我想这与Department和Category具有相同的列名这一事实有关 - 但它不会导致Code列出现问题.
我有什么想法可以解决这个问题?我不能真正搞乱生成的代码,因为如果我更新模型,任何更改都将被删除.
干杯
c# ×4
.net-core ×2
asp.net-core ×2
.net ×1
entity-model ×1
html5 ×1
kruntime ×1
linq ×1
linq-to-sql ×1
offline-mode ×1