标签: .net-4.8

Visual Studio 无法面向 .NET Framework 4.8

我在创建面向 .NET Framework 4.8 的项目时遇到了一些问题。我正在使用 Visual Studio 2019,升级到版本 16.2.5。我还安装了.NET Framework 4.8 Developer Pack。在 Visual Studio 安装程序中,我没有看到任何用于启用类似于 4.7 的4.8 开发工具的选项。

.net visual-studio .net-4.8

28
推荐指数
6
解决办法
4万
查看次数

尽管有 4.8.1 最新版本可用,为什么仍推荐使用 .NET 4.8 版本

查看可用的 .NET 框架,4.8.1这是最新的。不过4.8recommended微软这边的。我很好奇这是为什么。是4.8.1测试版还是什么?我找不到任何相关信息。

在此输入图像描述

.net .net-4.8

28
推荐指数
1
解决办法
2万
查看次数

如何在 Visual Studio 中将 .NET Framework 更改为 .NET Standard/Core?

我在 Visual Studio 中有一个 C# 解决方案。它最初是在 .NET Framework 中创建的。我想将项目转换为 .NET Standard/Core。如果我进入项目 --> 属性,我会看到附加的屏幕,其中目标框架是 .NET Framework。我如何才能将其更改为 .NET Standard/Core?

项目 --> 属性:目标框架当前设置为 .NET Framework

c# visual-studio .net-core .net-standard .net-4.8

23
推荐指数
1
解决办法
3万
查看次数

项目“ClassLibrary1.csproj”针对“netstandard2.1”。它不能被以“.NETFramework,Version=v4.8”为目标的项目引用

我在目标中有一些类库项目netstandard2.1

当我在 target 中将其引用到我的 WPF 项目时.NET Framework v4.8,在构建时出现错误:

严重性代码描述项目文件行抑制状态错误项目“..\ClassLibrary1\ClassLibrary1.csproj”针对“netstandard2.1”。它不能被以“.NETFramework,Version=v4.8”为目标的项目引用。应用程序1

我能做什么?

更新:我读这个Q / A有关引用netcoreapp2.1和有关补充说答案有说服力netstandar2.1。但是我的图书馆已经在目标中了netstandard2.1

.net c# .net-standard .net-4.8 .net-standard-2.1

19
推荐指数
2
解决办法
1万
查看次数

Roslyn 警告编译 .Net Framework 应用程序

我的 C# .Net Framework 4.8 应用程序上突然出现以下警告。我已删除所有 bin 和 obj 文件夹,并尝试从包中删除并安装 DotNetCompilerPlat,但该消息不断出现。有任何想法吗?

\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\build\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.targets(13,9): message : MSB4120: Item 'RoslynCompilerFiles' definition within target references itself via (qualified or unqualified) metadatum 'RecursiveDir'. This can lead to unintended expansion and cross-applying of pre-existing items. More info: https://aka.ms/msbuild/metadata-self-ref
\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\build\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.targets(13,9): message : MSB4120: Item 'RoslynCompilerFiles' definition within target references itself via (qualified or unqualified) metadatum 'Filename'. This can lead to unintended expansion and cross-applying of pre-existing items. More info: https://aka.ms/msbuild/metadata-self-ref
\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.4.1.0\build\net472\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.targets(13,9): message : MSB4120: Item 'RoslynCompilerFiles' definition …
Run Code Online (Sandbox Code Playgroud)

.net c# roslyn .net-4.8

18
推荐指数
1
解决办法
2611
查看次数

为 .net 6.0 创建单元测试

我创建了一个 .Net 6 类库,现在我正在尝试创建一个测试项目。
.net 6 测试项目不可用。在网上我找到了使用.Net Framework或.Net core的信息来进行测试。

我创建了一个 .Net Framework 4.8 测试项目并引用了我的类库。

我收到编译器错误:

项目“..\CircularList\CircularList.csproj”目标为“net6.0”。它无法被面向“.NETFramework,Version=v4.8”的项目引用。单元测试

那么我该如何进行单元测试呢?有没有办法从 .Net Framework 4.8 转向 .Net 6.0?

.net c# unit-testing .net-4.8

16
推荐指数
2
解决办法
1万
查看次数

Net Framework 4.8 EF6 EDMX T4 错误_ GenerationEnvironment 为 NULL

这始于 EDMX 突然不生成类文件。.context.cs 文件包含类声明,例如

  public virtual DbSet<myTable> myTable { get; set; }
Run Code Online (Sandbox Code Playgroud)

但实际的类文件并未生成。两个 .tt 文件都在那里,“运行自定义工具”没有帮助。

在调试 Model.tt T4 模板时,此声明:

public StringBuilder GenerationEnvironment { get { return (StringBuilder)_generationEnvironment.GetValue(_instance, null); } }
Run Code Online (Sandbox Code Playgroud)

产生

“System.NullReferenceException:'未将对象引用设置为对象的实例。'”

_ GenerationEnvironment 变量为 NULL。

为了确保数据库更改不会触发此问题,我重新创建了模型,仅包含一个未修改的表,但没有任何改进。

不幸的是,我没有能力将其转移到代码优先和核心,因此我们将不胜感激地收到任何建议。

t4 entity-framework edmx edmx-designer .net-4.8

16
推荐指数
2
解决办法
2673
查看次数

无需更改 .NET 中的代码即可启用 TLS 1.2

我有 .NET 4.5.2 应用程序用于SmtpClient发送电子邮件。该应用程序安装在Windows 2012 R2服务器上。当我禁用 TLS 1 和 TLS 1.1 并仅启用 TLS 1.2 时,应用程序停止发送邮件。我认为这是因为 .NET 4.5.2 不支持 v1.2。

我正在考虑以下步骤

1> 在 Windows Server 上禁用 TLS 1 和 TLS 1.1,仅启用 TLS 1.2。
2>在Windows服务器上安装.NET 4.8。
3>将应用程序的目标框架更改为4.8(在csproj和web.config中)并重新编译。
4>部署应用程序。


基于文档的 问题Starting with .NET Framework 4.7.1, WCF defaults to the operating system configured version
1>这仅适用于 WCF 还是 SMTP 也默认为操作系统配置的版本?
2> 或者我是否需要明确设置版本,例如System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
3> 现在是否可以设置版本 TLS 1.2,并且将来 TLS 1.3 可用时应用程序应自动默认为 TLS 1.3?(无需再次更改代码)

.net c# smtpclient tls1.2 .net-4.8

14
推荐指数
1
解决办法
3万
查看次数

为 .NET Framework 项目创建基于 Linux 的 Docker 文件

我有一个 ASP.Net Framework 4.8 项目。我想为此项目创建一个基于 Linux 的 Docker 文件,但我在 .NET Framework 的 Docker 文件中找不到基于 Linux 的映像来用作基础映像。如何为此创建 Docker 文件?

.net c# docker dockerfile .net-4.8

14
推荐指数
2
解决办法
5539
查看次数

Windows .NET更新后,最后一位数字的舍入取整

Windows更新之后,某些计算值的最后一位已更改,例如,从-0.0776529085243926更改为-0.0776529085243925925。更改总是下降一个,并且偶数和奇数都会受到影响。这似乎与KB4486153有关,因为还原此更新会将值更改回以前的值。

在Visual Studio中进行调试并将鼠标悬停在变量上时,已经可以看到此更改。稍后将该值写入输出文件,并在其中进行更改(不运行调试器)。

最小的可复制示例

var output = -0.07765290852439255;
Trace.WriteLine(output); // This printout changes with the update.

var dictionary = new Dictionary<int, double>();
dictionary[0] = output; // Hover over dictionary to see the change in debug mode
Run Code Online (Sandbox Code Playgroud)

背景

计算值来自

output[date] = input[date] / input[previousDate] - 1;
Run Code Online (Sandbox Code Playgroud)

不管浮点运算的精度损失如何,我都可以在“即时”窗口中进行计算,并获得-0.07765290852439255升级前后的信息。

但是,将鼠标悬停在output变量上时,我看到
{[2011-01-12 00:00:00, -0.0776529085243926]}了升级之前和
{[2011-01-12 00:00:00, -0.0776529085243925]}之后的情况,并且这种差异也传播到了输出文件中。

看起来更新前后的计算值是相同的,但是其表示方式四舍五入。

输入值为

{[2011-01-11 00:00:00, 0.983561000400506]} 
{[2011-01-12 00:00:00, 0.907184628008246]}
Run Code Online (Sandbox Code Playgroud)

目标框架设置为 .NET Framework 4.6.1

在保持更新的同时,我可以做些什么来得到以前的行为?

我知道浮点计算的精度损失,但是为什么在更新后会发生这种变化,又如何保证未来的更新不会改变值的表示呢?

KB4486153是Microsoft .NET Framework 4.8的更新,请参阅https://support.microsoft.com/en-us/help/4486153/microsoft-net-framework-4-8-on-windows-10-version-1709- Windows …

c# floating-point .net-4.8

11
推荐指数
1
解决办法
256
查看次数