我读过很多文章,包括这篇文章,但我仍然无法弄清楚它们之间有什么区别,而且他们也没有用简单的术语或根本没有解释过.
有人可以澄清.NET SDK和.NET Runtime之间的区别吗?
更新:非常感谢使用比较.类比和简单的英语是非常有教育意义的.
延迟加载是一种常用的技术.但是,在Angular中,似乎该技术的粒度级别在模块级别停止.
这意味着您可以在浏览器中加载模块main,然后在特殊场合模块B和C和D可以懒惰加载.
几乎所有关于网络的教程都解释了这一点.但是,有没有办法懒洋洋地加载组件?
考虑这个用户进入应用程序的简单示例,当点击"发票"链接时,URL更改为新路由/invoice/list,进度条显示加载,而invoices包含HTML和JS 的组件正在浏览器中加载,则动态注册主模块,并在相关插座中显示.Angular有可能吗?
我正在将我的 JavaScript 文件升级到 Visual Studio 2019 中的 TypeScript,以更好地管理它们。
当我想从另一个文件导入模块时,我看到波浪线抱怨:
x 只能使用“esModuleInterop”标志默认导入
我应该如何解决这个问题?
为了模块化,我在不同的程序集中创建了一些控制器.每个程序集代表整个系统的有界上下文(模块,子系统,分区等).
每个模块的控制器都是由对其他模块一无所知的人开发的,中央协调器即将在一个应用程序中覆盖所有这些模块.
所以,有一个名为school的模块,它有一个TeacherController.它的输出是Contoso.School.UserService.dll.
主要的协调器被调用Education,它有一个引用Contoso.School.UserService.dll.
我program.cs是:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args).UseKestrel()
.UseStartup<Startup>()
.Build();
Run Code Online (Sandbox Code Playgroud)
然而对于教师控制器的路线,我得到404.如何在其他组件中使用控制器?
我们正在升级到.NET Core,我们有一个使用Selenium进行某些任务的爬行引擎.我们使用chromedriver.exe它在.NET 4.6.1中运行得很好.
对于.NET Core,我们创建了一个控制台应用程序,并添加了这些包:
<ItemGroup>
<PackageReference Include="Selenium.WebDriver" Version="3.8.0" />
<PackageReference Include="Selenium.Support" Version="3.7.0" />
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="2.34.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
但是当我运行我的代码时,我收到此错误:
chromedriver.exe文件不存在于当前目录或PATH环境变量的目录中.该驱动程序可以从http://chromedriver.storage.googleapis.com/index.html下载.
我可以看到构建后,chromedriver.exe被复制到bin\Debug\netcoreapp2.0文件夹.我也手动将它复制到bin\Debug文件夹.但在这两种情况下都无法找到.
我在这里想念什么?
这是典型的Angular材质matInput:
<input matInput [(ngModel)]="model.property" name="property" />
Run Code Online (Sandbox Code Playgroud)
现在,当模型发生变化时应用逻辑,其他开发人员在SO中提出的一个常见解决方案就是将banry in the box打破为属性绑定器和事件挂钩表达式:
<input matInput [ngModel]="model.property" (ngModelChange)="model.property=someLogic($event)" />
Run Code Online (Sandbox Code Playgroud)
基于这个逻辑,我创建了一个digitGroup获取输入数字的函数,在每三个数字之间放置逗号,并在matInput字段中显示.
然而,问题是现在model.property是一个表示数字分组数字的字符串,而不是一个真正的JavaScript数字,因此在每个地方我需要访问它的值并对其进行一些数学运算,我需要先做undigitGroup(model.property).
是否有可能同时绑定matInput到两个属性model?这样我可以model.property进行计算并model.digitGroupedProperty同时向用户显示.
我对波斯语有这种需求,首先应该从字符的角度对查询进行清理/规范化.
应该使用波斯语"ی"而不是阿拉伯语"ي".
在EF 6中,我有一个拦截器,它将实现IDbCommandInterceptor并使用这一简单的代码行更改原始SQL查询:
command.CommandText = command.CommandText.SafePersianEncode();
Run Code Online (Sandbox Code Playgroud)
这非常有益,可以降低成本,提高一致性,提高质量并防止数据清理要求.
当我们迁移到EF Core 2.0时,我们意识到拦截器不存在,似乎它们也不会在未来的版本中实现.
由于这是一个非常合理的要求,拦截流的能力是一个众所周知的模式(如Angular拦截器在一个地方修改所有HTTP请求/响应),从架构的角度来看,它有助于管理跨领域的问题一个整洁的方式,我们现在应该做什么?
是否有一种全局方式(或者说根本没有)我们可以在它转到EF Core 2.0中的SQL Server之前修改RAW SQL查询?
VS 2017为ASP.NET Core MVC项目创建一个名为的文件launchSettings.json,其中包含有关IIS Express和Kestrel AMAIK的信息。
我们甚至在开发机器上也将项目托管在IIS中,因此我们实际上并不需要这些文件。
我们删除了它们,但是它们不断返回,并且每次我们打开解决方案时,它们都会出现。
有没有一种方法可以防止VS创建这些文件?
我已根据此页面中的指南将现有 API 项目从 迁移2.2到。3.0
因此我删除了:
app.UseMvc(options =>
{
options.MapRoute("Default", "{controller=Default}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)
并插入:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(name: "Default", pattern: "{controller=Default}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)
但是不会绑定控制器和操作。对于我调用的任何 API,我得到的只是 404。
我应该如何调试它,我在这里想念什么?
更新:该Startup.cs文件位于另一个程序集中。我们Startup.cs在许多项目中重用一个集中的文件。
c# ×4
.net-core ×3
angular ×2
components ×1
devtools ×1
lazy-loading ×1
networking ×1
runtime ×1
sdk ×1
selenium ×1
sql-server ×1
typescript ×1