有人可以向我解释Mono与微软最近提供的开源/ Linux可移植.NET堆栈(CoreCLR,CoreFX,Roslyn,ASP.NET)之间的当前关系是什么?
很明显这些项目是重叠的,所以我很好奇它们的路线图是什么 - Mono会以某种方式用微软的新组件替换它们自己的组件,还是它们会以某种方式共存?
我不确定它是否可行,但我想在dnx时更改dnx版本.从Visual Studio代码运行.
即使我目前的dnx版本是1.0.0-beta5-11682 coreclr Visual Studio Code运行1.0.0-beta4 mono
是否可以更改Visual Studio Code的默认dnx版本?
我正在学习ASP.NET Core 1.0(vNext).考虑到这一点,我有一个结构如下的解决方案:
MySolution
src
MyLibrary
MyClass.cs
project.json
MyWebSite
Startup.cs
project.json
Run Code Online (Sandbox Code Playgroud)
我正在MyLibrary
使用命令行成功编译dnu build
.我跑了dnu pack
哪个生成了MyLibrary.1.0.0.nupkg
.也有两个文件夹:dnx451
与dnxcore50
这两者都含有MyLibrary.1.0.0.dll
.我想用MyLibrary
的MyWebSite
,但是,我很困惑.
MyLibrary
进MyWebSite
?我手动复制.dll
文件吗?如果是这样,哪一个?我应该使用该nupkg
文件吗?这是一个私有程序集,我不想通过NuGet全局发布它.MyWebSite/project.json
才能参考这个MyLibrary
装配?我正在从.NET 4.6到.NET Core移植一些代码,并且遇到了MemoryCache的一些问题.4.6代码使用MemoryCache.Default来实例化缓存,但这似乎在.NET Core中不可用.在.NET Core中是否有相同的内容,或者我是否应该将我自己的MemoryCache作为单例创建并通过IOC注入它?
这很容易获得旧.NET中的所有可用类型(例如某些接口),但我无法在新的CoreCLR中找到如何做到这一点的方法.
我想要做的是拥有像GetRepository这样的函数,它应该查找IRepository的现有实现并返回该类型的新实例.实施将位于不同的项目中.
所以,在.NET中我可以使用这样的东西:
AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes())
Run Code Online (Sandbox Code Playgroud)
我现在对CoreCLR唯一的解决方案是:
public T GetRepository<T>()
{
foreach (Type type in typeof(T).GetTypeInfo().Assembly.GetTypes())
if (typeof(T).IsAssignableFrom(type) && type.GetTypeInfo().IsClass)
return (T)Activator.CreateInstance(type);
return default(T);
}
Run Code Online (Sandbox Code Playgroud)
但它只有在接口和实现位于同一个程序集中时才有效(这不是我的情况).
谢谢!
我正在将我的Web应用程序从ASP.NET Core RC1迁移到RC2.在RC2中IServiceCollection
,不再具有该AddInstance
方法.如何注册配置?
这是如何在RC1中完成的
public class Startup
{
public IConfiguration Configuration { get; set; }
public void ConfigureServices(IServiceCollection services)
{
// AddInstance doesn't exist
services.AddInstance<IConfiguration>(Configuration);
.
.
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用
Decimal.Round(decimal d)
Run Code Online (Sandbox Code Playgroud)
MSDN说它可以抛出OverflowException
https://msdn.microsoft.com/en-us/library/k4e2bye2(v=vs.110).aspx
我不确定如何发生这种情况.我尝试使用ilSpy查看实现并获得直到外部实现:
// decimal
[SecurityCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void FCallRound(ref decimal d, int decimals);
Run Code Online (Sandbox Code Playgroud)
有没有人知道什么输入可以抛出这个异常?
我有asp.net core 2 应用程序。根据文档,我.pubxml
为我的开发环境创建了文件。我正在使用 Web 部署(远程代理)将 Web 包部署到目标 Web 服务器。在我们安装了 jenkins 的构建服务器上,我运行以下命令来构建和部署
D:\Jenkins\myproject\workspace\myapplication\Src\Api>dotnet publish Api.csproj /p:PublishProfile=development.pubxml
Run Code Online (Sandbox Code Playgroud)
它成功构建应用程序并将其部署到目标 Web 服务器。
但是,我的应用程序有多个appsettings
特定于每个环境的文件。例如appsettings.json
,appsettings.development.json
,appsettings.staging.json
和appsettings.production.json
部署过程部署所有的AppSettings文件到Web服务器。(在这种情况下开发网络服务器)
我如何只包含特定于环境的 appsettings 文件?(在这种情况下,我想部署appsettings.json
,appsettings.development.json
但不是其他 2 个文件)
msbuild web-deployment-project web-deployment coreclr asp.net-core-2.0
我在 Dot.net Core 2.0 中创建了一个控制台应用程序,当我运行时,我收到无法附加到 CoreCLR 的消息。访问被拒绝
我尝试过清理、删除 bin 和 obj 中的文件,也尝试在 86x 下运行,但找不到解决此问题的任何方法。