ASP.NET 5 roslyn动态编译
ASP.NET 5 roslyn dynamic compilation
我有一个简单的 ASP.NET 5
Web Api 应用程序,它是使用 yo aspnet
制作的。我正在使用 Visual Studio 代码开发 Windows 10(不想使用 Visual Studio)。我想从非 Windows 环境模拟开发。
据我所知roslyn
编译器应该动态编译更改的文件。但是当我 运行 我的应用程序使用以下命令 dnu restore && dnx --watch web
应用程序启动时。但是,如果我然后(dnx --watch web
仍然是 运行ning)更改一小部分代码并刷新网页,注意会发生变化。
之前:
// GET: api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
之后:
// GET: api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2", "value3" };
}
我检查过这是否是缓存的原因,但事实并非如此。我在这里错过了什么?
注意:
我注意到这可能是网络服务器的原因,我正在使用 Kestrel
。有一部分是我的project.json
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
我有这个问题的临时解决方案,使用 gulp.js:
// gulpfile.js
var gulp = require('gulp');
var bg = require("gulp-bg");
var dnxweb = null;
gulp.task('dnx:web:start', dnxweb = bg("dnx", "web"));
gulp.task('dnx:web:stop', () => {
if (!dnxweb)
return;
dnxweb.setCallback((proc) => {
if (proc.errorcode != 0)
proc.exit(proc.errorcode);
});
dnxweb.stop();
});
gulp.task('watch', () => {
gulp.watch('**/*.cs', ['dnx:web:stop', 'dnx:web:start']);
});
gulp.task('build', ['dnx:web:start', 'watch']);
我有一个简单的 ASP.NET 5
Web Api 应用程序,它是使用 yo aspnet
制作的。我正在使用 Visual Studio 代码开发 Windows 10(不想使用 Visual Studio)。我想从非 Windows 环境模拟开发。
据我所知roslyn
编译器应该动态编译更改的文件。但是当我 运行 我的应用程序使用以下命令 dnu restore && dnx --watch web
应用程序启动时。但是,如果我然后(dnx --watch web
仍然是 运行ning)更改一小部分代码并刷新网页,注意会发生变化。
之前:
// GET: api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
之后:
// GET: api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2", "value3" };
}
我检查过这是否是缓存的原因,但事实并非如此。我在这里错过了什么?
注意:
我注意到这可能是网络服务器的原因,我正在使用 Kestrel
。有一部分是我的project.json
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
}
我有这个问题的临时解决方案,使用 gulp.js:
// gulpfile.js
var gulp = require('gulp');
var bg = require("gulp-bg");
var dnxweb = null;
gulp.task('dnx:web:start', dnxweb = bg("dnx", "web"));
gulp.task('dnx:web:stop', () => {
if (!dnxweb)
return;
dnxweb.setCallback((proc) => {
if (proc.errorcode != 0)
proc.exit(proc.errorcode);
});
dnxweb.stop();
});
gulp.task('watch', () => {
gulp.watch('**/*.cs', ['dnx:web:stop', 'dnx:web:start']);
});
gulp.task('build', ['dnx:web:start', 'watch']);