在我的测试项目中,我有一些未在代码中分配的私有字段,但是被分配了反射.
编译时,我收到如下警告:
警告CS0649字段'CLASSNAME.FIELDNAME'永远不会被赋值,并且将始终具有其默认值null
我已经尝试添加<NoWarn>649</NoWarn>到xproj中的第一个PropertyGroup.但我仍然得到错误.
NoWarn在DNX中不起作用吗?或者我做错了什么?这个问题还有其他解决办法吗?
我想在我正在开发的框架中绕过一些经典的汇编扫描技术.
所以,说我已经定义了以下合同:
public interface IModule
{
}
Run Code Online (Sandbox Code Playgroud)
这就是说Contracts.dll.
现在,如果我想发现这个接口的所有实现,我们可能会做类似以下的事情:
public IEnumerable<IModule> DiscoverModules()
{
var contractType = typeof(IModule);
var assemblies = AppDomain.Current.GetAssemblies() // Bad but will do
var types = assemblies
.SelectMany(a => a.GetExportedTypes)
.Where(t => contractType.IsAssignableFrom(t))
.ToList();
return types.Select(t => Activator.CreateInstance(t));
}
Run Code Online (Sandbox Code Playgroud)
不是一个很好的例子,但它会做.
现在,这些类型的汇编扫描技术可能完全不足,而且它们都在运行时完成,通常会影响启动性能.
在新的DNX环境中,我们可以使用ICompileModule实例作为元编程工具,因此您可以将实现捆绑ICompileModule到Compiler\Preprocess项目中的文件夹中,并让它做一些时髦的事情.
我的目标是使用一个ICompileModule实现来完成我们在运行时在编译时所做的工作.
IModuleModuleList用一个实现来调用它,该实现产生每个模块的实例.public static class ModuleList
{
public static IEnumerable<IModule>() GetModules()
{
yield return new Module1();
yield return new Module2();
} …Run Code Online (Sandbox Code Playgroud) 我在包管理器控制台中运行此命令以升级dnx.
"dnvm upgrade -u default"
Run Code Online (Sandbox Code Playgroud)
一旦它得到更新,我可以看到(C:\ Users\Chandrasekar.dnx\runtimes)新的运行时版本,如下所述
"dnx-clr-win-x86.1.0.0-beta8-15530"
Run Code Online (Sandbox Code Playgroud)
我开始在VS2015中创建新项目 - > ASPNET 5 Web应用程序,它最终出现了一些错误.
在输出窗口中,您可以看到错误"无法加载'Microsoft.DNX.PackageManager' ",根据此公告,它已被重命名为"Microsoft.Dnx.Tooling",所以我的问题是为什么新的DNX beta 8版本仍然依赖在这个删除或重命名的DLL'Microsoft.DNX.PackageManager '?
输出窗口错误:
PATH=.\node_modules\.bin;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External;%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\git
C:\Users\Chandrasekar\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta8-15530\bin\dnx.exe "C:\Users\Chandrasekar\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta8-15530\bin\lib\Microsoft.DNX.PackageManager\Microsoft.DNX.PackageManager.dll" restore "C:\Users\Chandrasekar\Documents\Visual Studio 2015\Projects\DNX8\src\DNX8" -f "C:\Program Files (x86)\Microsoft Web Tools\DNU"
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.DNX.PackageManager' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.DNX.PackageManager'
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence …Run Code Online (Sandbox Code Playgroud) 我正在移植.NET 3.5 - 4.5中的一些代码.在我的程序集内部,我有一些代码从当前正在执行的程序集中读取资源.但是,DNX核心5.0中GetExecutingAssembly()的Assembly类型不是方法.
var xsdStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(xsdPath);
Run Code Online (Sandbox Code Playgroud)
Assembly.GetExecutingAssembly()在DNX核心5.0中相当于什么?或者,如果我需要一个命名空间来获取该方法(也许是扩展方法?),那么命名空间是什么?
我现在正在使用FileStreamResult它,它可以流式传输视频,但不能寻找它.它总是从头开始.
我正在使用,ByteRangeStreamContent但似乎它不再可用了dnxcore50.
那怎么办?
我是否需要手动解析请求范围标头并编写一个自定义FileResult来设置响应Content-Range和其余标头,并将缓冲区范围写入响应主体,或者是否已经实现了某些内容并且我错过了它?
我正在尝试为我正在开发的网站设置CI服务器,但我找不到有关如何使用新的ASP.NET 5的任何信息.
我真的很沮丧这个问题.我已经尝试更改版本号,但测试资源管理器中没有显示任何测试.
在测试输出窗口中,我可以看到此输出
Starting Microsoft.Framework.TestHost [C:\Users\sul\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta4\bin\dnx.exe --appbase "path to test project" Microsoft.Framework.ApplicationHost --port 63938 Microsoft.Framework.TestHost --port 63954 list ]
Unable to start Microsoft.Framework.TestHost
========== Discover test finished: 0 found (0:00:36.5471185) ==========
Run Code Online (Sandbox Code Playgroud)
这是如此脆弱,有时测试显示然后他们消失了.重启VS没有帮助,重新安装xunit/xunit运行器也没有帮助.
在另一个测试项目中,我得到了不同的输出,但仍未显示测试
Starting Microsoft.Framework.TestHost [C:\Users\sul\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta4\bin\dnx.exe --appbase "path to project" Microsoft.Framework.ApplicationHost --port 63938 Microsoft.Framework.TestHost --port 64421 list ]
Connected to Microsoft.Framework.TestHost
Discovering tests in 'path to project\project.json'
========== Discover test finished: 0 found (0:00:35.9341416) ==========
Run Code Online (Sandbox Code Playgroud)
这是我的project.json的一部分
"commands": {
"test": "xunit.runner.dnx"
},
"dependencies": {
"Microsoft.AspNet.Http": "1.0.0-*",
"Microsoft.AspNet.Http.Core": "1.0.0-*",
"Microsoft.AspNet.TestHost": "1.0.0-*",
"Moq": "4.2.1502.911", …Run Code Online (Sandbox Code Playgroud) Visual Studio代码1.0.0
Mac OS X 10.11.4
已安装DNX,我可以从终端运行.NET Core应用程序.尝试运行.NET Core项目时出现以下错误.
输出窗口:
无法启动外部程序dotnet.
产生dotnet ENOENT
有什么建议?
我有一个使用DNX框架的.NET 5 Web应用程序,我想在构建项目时运行'npm install','bower install'等.
现在我可以在发布时使用'prepublish',但它似乎不适用于'prebuild',虽然我看到它可能在这里
我现在拥有的:
"scripts": {
"prepublish": [ "npm install", "bower install", "tsd install", "gulp min" ]
}
Run Code Online (Sandbox Code Playgroud) 我试图了解AsyncLocal应该如何在.Net 4.6中运行.我将一些数据放入AsyncLocal ......但是当ThreadContext更改时,它被设置为null.我正在使用AsyncLocal的全部原因是在等待异步操作时尝试跨线程保留/缓存此值.知道为什么会特别调用它并在上下文发生变化时设置为null吗?关于AsyncLocal的文档非常稀疏......也许我已经把它弄错了.
public class RequestContextProvider : IRequestContextProvider
{
private static readonly AsyncLocal<IRequestContext> _requestContext = new AsyncLocal<IRequestContext>(ValueChangedHandler);
private static void ValueChangedHandler(AsyncLocalValueChangedArgs<IRequestContext> asyncLocalValueChangedArgs)
{
**//This is just here to observe changes...when I await a call that
//causes control to pass to a different thread..this is called
//with a current value of null.**
var previousValue = asyncLocalValueChangedArgs.PreviousValue;
var currentValue = asyncLocalValueChangedArgs.CurrentValue;
var contextChanged = asyncLocalValueChangedArgs.ThreadContextChanged;
}
public void SetContext(IRequestContext requestContext)
{
_requestContext.Value = requestContext;
}
public IRequestContext GetContext()
{
return _requestContext.Value;
} …Run Code Online (Sandbox Code Playgroud) dnx ×10
asp.net-core ×5
c# ×4
.net-core ×1
async-await ×1
coreclr ×1
dnvm ×1
msbuild ×1
project.json ×1
roslyn ×1
teamcity ×1
xunit ×1
xunit2 ×1