为一个.NET MVC项目构建/捆绑一个Angular 2应用程序
我目前在.NET 4.6项目的内部有一个Angular'2'应用程序.它的运作良好,但是我对捆绑有疑问. 该应用程序是使用最新的Angular CLI创建的,我倾向于使用它构建/捆绑该应用程序.从我的经验来看,捆绑包的webpack创建很棒. 我向您提出的问题是,您对捆绑并在.NET MVC应用程序中使用此捆绑包有任何建议/想法吗? 我已经看到了一些其他线程,其中开发人员使用了一个Gulp文件,该文件执行NG构建命令,然后将此输出运输到要消费的另一个位置. 任何建议都将不胜感激. 托马斯 解决方案 我解决了这个问题.我已经实施了我认为是一个干净的解决方案. 对于任何感兴趣的人,我的答案如下: 在项目的根部或您想选择的任何其他名称都有一个" Angular"文件夹. 在此内,您有您的angular-cli.json和package.json文件. 如果您以后要在线下创建nuget软件包以进行部署(很可能不是),则在您的angular/src
0 2024-02-22
编程技术问答社区
Angular和WebAPI配置
我们有一个Angular 4应用程序和一个WebAPI应用程序(.NET框架).我们设置了一个Azure应用程序,其中两个应用程序都部署到了它(客户端和服务).根路径指向客户端. http请求到我们的API(/api/{Controller}/)未达到我们的服务,而Angular路线似乎正在捡起它们并将index.html作为响应内容返回. . 我们如何设置Azure,以便我们的Angular应用程序为HTML/CSS/JS内容提供服务,并呼叫"/api/"路由我们的服务? 我们尝试过将根路径指向该服务,但是然后我们收到所有非API请求的404. 解决方案 要回答我自己的问题,我需要按照本文概述的静态文件提供: 简而言之,我将服务(WebAPI)部署到Azure根,而端(Angular 4)部署为编译为" DIST"文件夹. 我添加了以下Nuget软件包:
0 2024-02-21
编程技术问答社区
MySQL 客户端和服务器无法通信,因为它们不具备共同的算法
我在AWS服务器上运行以下代码,试图连接到AWS提供的MySQL服务: String conn = buildConnString(dc); MySqlConnection connection = new MySqlConnection(conn); connection.Open(); 我会收到以下异常消息和堆栈跟踪: Exception: The client and server cannot communicate, because they do not possess a common algorithm StackTrace: at System.Net.SSPIWrapper.AcquireCredentialsHandle(SSPIInterface SecModule, String package, CredentialUse intent, SecureCredential scc) at System.Net.Security.Secu
6 2024-01-26
编程技术问答社区
如何将一个.NET标准库改为.NET框架库?
我正在为C#中的一个简单解析器编写类库.当我第一次创建它时,我使用了.NET标准2.0,但是现在我需要将其迁移到.NET 4.6,以符合解决方案中的其他项目并使用Nunit. . 我试图按照说明在Microsoft文档中,但是当我尝试在属性中选择另一个框架时,我只能找到其他.NET标准版本. 我该如何迁移?我需要手动编辑.csproj文件吗? 解决方案 打开项目文件(.csproj),然后将TargetFramework更改为net462 net462 其他解决方案 我在Visual Studio 2017上的个人经验是,重建项目和添加存在的来源是最简单,最安全,最有效的方法 - 因为基于.NET框架的CSPROJ文件具有额外的XML元素(与基于标准的)相比,似乎更改" TargetFramework"是不够的. 以下是
2 2024-01-08
编程技术问答社区
在框架4.6项目中使用.net核心DLL
我已经在.NET Core 2.0中构建了DLL,现在我想使用.NET 4.6.1-FRAMEWORK. 我可以参考dll,但我得到了一个" system.io.fileleloadexception",它说" system.runtime,版本4.2.0.0". 将.NET Core 2.0-dll集成在全帧项目中的标准方法是什么? 解决方案 根据 msdn 您应该参考.净标准和参考.NET标准2.0库您应该在.NET框架4.6.1或更高并安装的.NET CORE 2.0 SDK上有一个项目. 您应该将目标框架更改为Winforms项目的4.6.1并安装.NET Core SDK.
6 2024-01-08
编程技术问答社区
在涉及SslStream.AuthenticateAsClient()的客户证书期间,设置 "Windows安全 "对话框的所有者。
一些背景 打电话给 Windows安全:此应用程序需要使用加密密钥 当满足这两个以下原因时,就会发生这种情况: 客户端试图连接到所请求的 客户端证书 作为TLS/SSL握手的一部分. 在以后版本的Windows(Win8和Win10)上,此对话框由一个名为" recredentialUibroker.exe "的外部程序提出,该程序由 svchost.exe 调用.在较早的版本上,它由加载到运行程序本身中的DLL呈现:win7和winxp 中的win7和 cryptui.dll 中的 comctl32.dll 问题 当此Windows安全对话框似乎是模态对话框时,它的行为更像是模态对话框没有所有者参数集. 这会导致以下问题: 对话框可以(并且经常确实)在运行程序的窗口后面打开,从而使用户很难找到自己. 对话框可以隐藏在背景中,用户单击运行程序的其他窗口,导致混乱. 在对话框打开时,运行程序其他窗口上的UI元素未冷冻,并且用户可以自由
0 2024-01-08
编程技术问答社区
.net 4.6框架是原地升级,那么.net框架4.5在vs2015中是如何工作的?
.NET 4.6框架正在升级,那么.NET Framework 4.5在VS2015中如何工作?我只看到一个文件夹v4.0.30319. dll如何存储? 在哪里? 解决方案 更新:请注意,参考汇编仅包含元数据,而根本不包含任何代码.感谢@vcsjones在下面指出此内容! 您可以在系统上找到一个"参考组件"文件夹,其中保留每个框架版本的确切二进制文件: Visual Studio然后根据您的定位版本使用这些工作室.这是针对.NET .NET 4.5.1的项目的System.dll参考. 其他解决方案 .NET Framework 4.5是4.0的就地升级. 4.5.1是4.5的就地. 4.5.2是4.5.1的就地. 4.6也已到位. 因此,4.6框架安装v4.0.xxxxx目录. 现在,Visual Studio 2015支持.NET Framework 4.5 for Targinaling .当您创建一个针对4.5框架的项目时,它会限制您使
2 2024-01-08
编程技术问答社区
在.VS 2015 NET 4.5中使用字符串插值和nameof
我在代码中使用$"hello {person}"和nameof(arg1)之类的东西,但是在检查我针对的项目属性时.NET 4.5. 可以吗?我以为这些东西是在4.6中引入的. 该项目在我的机器上构建并运行还可以 - 但是我担心部署时会出现问题. 解决方案 这是一项编译器功能,而不是框架功能.我们在Visual Studio 2015中成功使用了这两个功能. . 在简而言之,编译器将$"hello {person}"转换为String.Format("hello {0}", person)和nameof(arg1)> "arg1".只是句法糖. 运行时看到String.Format呼叫(或字符串文字" arg1"),并且不知道(也不关心)原始源代码的样子.自.NET框架的早期以来,支持String.Format,因此没有什么可以阻止您针对较早版本的框架. 其他解决方案 现有答案谈论这是一个C#6功能,而没有.NET框架组件. 这完全是nameo
10 2024-01-08
编程技术问答社区
错误 - 无法使用sdktoolspath找到al.exe
我将Visual Studio 2012解决方案迁移到Visual Studio 2015.我想继续使用该版本.因此,我认为我必须卸载.NET框架4.6. 错误消息:任务无法使用sdktoolspath找到" al.exe". 或注册表键" hkey_local_machine \ software \ Microsoft \ Microsoft SDK \ netfxsdk \ 4.6 \ winsdk-netfx40tools-x86. 已设置并在正确的处理器特定位置中存在该工具 在sdktoolspath下,Microsoft Windows SDK是 安装. 由于上述错误,该解决方案不会编译.我认为这与.NET 4.6的卸载有关.然后我尝试重新安装.NET 4.6,但是在Windows 10下,这是不可能的. 所以现在我不知道如何解决此问题.您知道我可以在哪里找到al.exe以及如何设置正确的路径吗? 解决方案 您不必重新安装.NET框架,但是 Wind
22 2024-01-08
编程技术问答社区
我的程序集实际运行的是哪个版本的.Net框架?
只是一些设置.我们安装了.NET框架3.5、4.0、4.5和4.6.1. 如果我们使用.NET Framework 3.5构建.NET应用程序或汇编,然后将App.Config设置为使用4.6.1的单个支持运行时运行 实际上使用了哪个版本的框架? 这个问题来自阅读这篇文章:">如何强制将申请汇编为目标.NET框架4在.NET Framework 4.6.1?下运行. @hans Passant指出,TargetFrameWorkAttribute将决定该框架的行为,他谈到的是有导致特定代码运行的开关等.但是,我没有找到任何解释哪个版本的Core .NET框架将会在这种情况下运行. 将使用.NET 3.5代码库,.NET 4.0代码库(由于4.0 CLR版本),或者将运行最新和最大的.NET
0 2024-01-07
编程技术问答社区
在.NET 4.6.2中的SOAP,"无法为SSL/TLS安全通道建立与权威机构的信任关系"。
我试图从.NET 4.6.2对内部应用程序进行肥皂WCF调用,然后在上面获得错误.我找到了一种我认为可以正常工作的解决方案,但是经过进一步调查,它仅适用于.NET 4.5: System.Net.ServicePointManager.ServerCertificateValidationCallback += (se, cert, chain, sslerror) => true; .NET 4.6是否有可获得的解决方案?我不关心安全性的影响,这仅用于内部测试. 解决方案 用于验证服务器证书,您可以将以下代码作为替代方案,它在ASP.NET Core Project中也很好地工作. //client is a proxy class object. client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication = new X5
6 2024-01-06
编程技术问答社区
使用VS2015 Update 1编译时,表达式会破坏代码
在我的机器上安装Visual Studio 2015更新1后,我看到我的一些单元测试失败了.进行了一些调查后,我能够将问题减少到这条代码中: Expression> expression = t => t.X == 0 && t.Y == 0 && t.GameObjectType == GameObjectType.WindMill; 悬停在表达变量上时,结果在Visual Studio的版本中是不同的: vs 2015: vs 2015更新1: 正在对枚举进行比较的逻辑(Servicestack.ormlite代码中的某个地方)现在采取了不同的作用,最终导致枚举未被识别为枚举,从而导致失败的单位测试. 我能够使用以下代码重现问题: class Program { static void Main(string[] args) { var gameObjects = new Lis
4 2024-01-04
编程技术问答社区
C#7.3中不提供"使用声明"功能.请使用语言版本8.0或更高 - 一台计算机上的错误,但可以在另一台计算机上使用
使用 Visual Studio Enterprise 16.3.7 在两台单独的计算机上,一台构建良好,另一台机器会引发错误: 功能"使用声明"在C#7.3中不可用.请用 语言版本8.0或更高. ,可以通过在.csproj中设置.csproj在非工作机上很容易解决,如下所示, https https://stackoverflow.com/a/48085575/3850405 或让Visual Studio自动将其像上面的屏幕截图一样修复. 8.0 我无法理解的是,为什么如果没有这条线在.csproj中,一台机器都可以构建正常,而另一台机器需要它? 解决方案 这可能是因为编译器默认使用不同的C#语言版本用于不同的目标框架. 要覆盖默认的C#语言,请添加到项目文件(如所建议的): 8.0
2 2024-01-04
编程技术问答社区
ASP.NET中间件不再保存文化了
给定 ASP.NET 4带MVC 5.2.3和.NET 4.6.1 我想根据某些请求(例如主机)更改当前文化支持全球化. 一个设置文化的owin-middleware. 简化的版本产生了行为: public override async Task Invoke(IOwinContext context) { var culture = new CultureInfo("es-ES"); Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; CultureInfo.CurrentCulture = culture; CultureInfo.CurrentUICulture = culture; await Next.Invoke(c
2 2024-01-04
编程技术问答社区
如何声明一个未启动的任务将等待另一个任务?
我已经完成了这个单元测试,我不明白为什么"等待任务.delay()不等待! [TestMethod] public async Task SimpleTest() { bool isOK = false; Task myTask = new Task(async () => { Console.WriteLine("Task.BeforeDelay"); await Task.Delay(1000); Console.WriteLine("Task.AfterDelay"); isOK = true; Console.WriteLine("Task.Ended"); }); Console.WriteLine("Main.BeforeStart");
4 2024-01-04
编程技术问答社区
在库中的异步方法中总是使用'async'和'await'关键字?
摘要:在库方法中,我何时应该使用async和await关键字,而不是直接返回Task? 我相信我的问题与这个.但是,这个问题是关于.NET 4.0和TPL的,而我将.NET 4.6与async和await>关键字一起使用.因此,我认为我的问题可能会得到不同的答案,因为当回答链接的问题时,这些关键字不存在. 说明:我正在为外部WCF服务编写一个简单的包装器,并且包装器进行了多个SendAsync调用.现在,我认为每种包装器方法都应直接返回Task而不会等待.我的理解是,async/await应在应用程序层上使用, 在库中. 所以,例如,这是我认为我应该对每种包装方法采用的方法: private Task GetSignDataAsync(SigningRequestType request) { return _service.SendAsync(request); } 但是在互联网上,我找到了使用此方法的几篇文章:
4 2024-01-04
编程技术问答社区
Visual Studio 2013和.NET 4.6
我正在尝试为我的项目和设置设置4.6 .NET框架,因为它未列出,我选择了最后一个选项 - 安装更多框架.那将我带到页面and 下载了该软件,尽管安装成功并且成功并且重新启动计算机,我仍然看不到可用选项列表中的4.6 .NET. 我已经搜索了它,据说.NET 4.6在VS 2015中包括,但我尚不清楚是否可以可用 vs2013.是吗?以及如何使其工作? 编辑 安装了TP(又称定位包)后,如图所示,我在选项中仍然没有任何新内容.建议? 解决方案 通过将以前答案的各种作品放在一起,我最终能够获得匹配的.NET框架4.6 和 the Targeting Pack的目标包,一旦安装了V4.6框架显示为可用目标框架Visual Studio 2012. 我从 http://www.microsoft.com/en-us/download/details.aspx?id=48130 ,并首先安装. 然后,我从 其他解决方案 您需要安装 .net框架4.6
4 2024-01-03
编程技术问答社区
我是否需要将我的应用程序定位到.NET 4.6来利用RyuJIT的优势?
从宣布.NET框架4.6 似乎暗示Ryujit仅适用于.NET 4.6. 这是否意味着我需要将我的应用程序重新定位为.net 4.6才能生效吗? 解决方案 简短答案:否. 长答案:使用调试器确保您拥有新版本.首先,请查看使用Explorer的运行时目录,导航到C:\ Windows \ Microsoft.net \ Framework64 \ V4.0.30319.您会发现那里的两个烦恼,clrjit.dll是基于ryujit项目的新抖动,compatjit.dll是旧的x64抖动. 项目>属性>调试>勾选"启用本机代码调试选项".使用"构建"选项卡并确保您删除了抖动强迫,必须不提取"首选32位"选项,必须将平台目标设置为AnyCPU.并使用"应用程序"选项卡选择框架目标. 使用调试>逐步开始调试.调试> Windows>模块显示已加载模块的列表.在该列表中查找抖动DLL,单击"名称"列标题进行按名称进行排序.如果您看到compatjit.dll背面,则
2 2024-01-03
编程技术问答社区
如何在Entity Framework 6.1中正确标记身份栏?
我已经看到有关如何将字段标记为身份列的许多帖子和答案.其中许多已经过时,并且针对实体框架的较旧版本. 一些资源告诉我在字段上使用属性: [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ID { get; set; } 其他资源告诉我将此代码添加到OnModelCreating方法: modelBuilder.Entity().Property(u => u.ID).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity); 我应该使用哪一个?首先,第二,两者都不重要,或者其他? 解决方案 只要主密钥属性的类型为数字或GUID,代码首先将按照惯例自动将密钥配置为身份列. 这意味着您不需要在代码中放置任何配置
2 2024-01-03
编程技术问答社区
TaskContinuationOptions.RunContinuationsAsynchronously和Stack Dives
in 此博客文章, Stephan Toub描述了一个新功能,该功能将包含在.NET 4.6中,该功能为TaskCreationOptions和TaskContinautionOptions枚举枚举RunContinuationsAsynchronously. 他解释了: "我谈到了调用{try}设置*方法的后果 任务completionsource,任何同步延续 任务Completionsource的任务可以同步运行 电话的一部分.如果我们在持有时在这里调用SetResult 锁,然后运行该任务的同步连续性 在握住锁的同时,这可能会导致非常真实的问题. 因此,在握住锁时,我们将任务completionsource抓取到 完成,但我们还没有完成,延迟这样做直到 锁已发布" 并给出以下示例以说明: private SemaphoreSlim _gate = new SemaphoreSlim(1, 1); private async Task WorkAsync()
0 2024-01-03
编程技术问答社区