我使用以下命令发布我的应用程序:dotnet publish -c Debug -r linux-arm. 它工作正常,但是,它为我不需要的语言生成文件夹。
每个文件夹中有这 3 个文件:Microsoft.Data.Edm.resources.dll、Microsoft.Data.OData.resources.dll、System.Spatial.resources.dll。
我根本不使用这些 DLL。
此外,如果我为 Windows 发布,则语言文件夹不存在。仅适用于 Linux-arm。
我如何将发布限制为英文?
我有点不清楚数据保护密钥在网络场环境中如何工作。我没有所有服务器都可以使用的通用位置(并且不想处理权限)。因此我想生成一个密钥并将其与网络应用程序一起分发。
我正在执行以下操作,但不确定这是否正确。因此,我在我的开发电脑上本地生成一个密钥文件:
var specialFolder = Environment.SpecialFolder.CommonApplicationData;
var appDataPath = Path.Combine(
Environment.GetFolderPath(specialFolder),
"company",
"product"
);
services.AddDataProtection().PersistKeysToFileSystem(new DirectoryInfo(appDataPath));
Run Code Online (Sandbox Code Playgroud)
这将创建一个key-some-guid.xml文件。然后我使用我的 Web 应用程序分发此文件。
现在,当我运行 Web 应用程序时,在 Startup.Configure 服务中,将此文件复制到位置appDataPath(上面定义的)并调用services.AddDataProtection().PersistKeysToFileSystem(new DirectoryInfo(appDataPath));.
那行得通吗?或者我从根本上错过了一些东西?
我有一个相对简单的.NET Core控制台应用程序。它没有外部依赖性。我使用以下方法构建它:
dotnet publish -c Release -r win10-x64
Run Code Online (Sandbox Code Playgroud)
它生成一个\bin\Release\netcoreapp2.2\win10-x64文件夹结构。此文件夹包含许多文件和一个发布文件夹:
我将整个结构复制到Windows Server2016。根据dotnet --list-runtimes命令,服务器安装了以下运行时:
Microsoft.AspNetCore.All 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Run Code Online (Sandbox Code Playgroud)
但是,当我运行.exe文件(netcoreapp2.2\win10-x64\LayoutAutomation.exe)时,出现以下错误:
Error:
An assembly specified in the application dependencies manifest (LayoutAutomation.deps.json) was not found:
package: 'runtime.win-x64.Microsoft.NETCore.App', version: '2.2.0'
path: 'runtimes/win-x64/lib/netcoreapp2.2/Microsoft.CSharp.dll'
Run Code Online (Sandbox Code Playgroud)
如果我尝试从publish文件夹(看似具有整个.NET Core安装)运行exe ,则运行良好。
那么,如何无法从该netcoreapp2.2\win10-x64文件夹运行exe ?.NET Core安装在盒子上-它应该运行。
我有一个 PNG 文件,文件属性证明它具有 8 位颜色深度:
是的,当我打开文件时
var filePath = "00050-w600.png";
var bitmap = new Bitmap(filePath);
Console.WriteLine(bitmap.PixelFormat);
Run Code Online (Sandbox Code Playgroud)
我明白了Format32bppArgb。我还查看了PropertyIdList和PropertyItems属性,但没有看到任何明显的东西。
那么如何从 PNG 中提取位深度呢?
PS 没有框架方法似乎工作。 System.Windows.Media.Imaging.BitmapSource可能有效,但仅适用于 WPF 和 .NET Core 3。我需要它用于 .NET 4.x 和 .NET Core 2.x。
PPS 我只需要知道 PNG 是否是 8 位,所以我写了一个确定的方法来检查是否有人需要它 - 应该在任何框架中工作。
public static bool IsPng8BitColorDepth(string filePath)
{
const int COLOR_TYPE_BITS_8 = 3;
const int COLOR_DEPTH_8 = 8;
int startReadPosition = 24;
int colorDepthPositionOffset = 0;
int colorTypePositionOffset = 1;
try
{
using …Run Code Online (Sandbox Code Playgroud) 我在.NET Core 2.2.x Web应用程序的日志中看到许多这些错误:
Connection ID ""13546832108852449106"", Request ID ""80018f57-0407-bc00-b63f-84710c7967bb"": An unhandled exception was thrown by the application.
System.ObjectDisposedException: The CancellationTokenSource has been disposed.
at System.Threading.CancellationTokenSource.ThrowObjectDisposedException()
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.<>c__DisplayClass314_0.<AbortIO>b__0(Object t)
Run Code Online (Sandbox Code Playgroud)
如您所见,该错误发生在.net核心框架中,而不是我的代码中。
我查找了错误中提到的特定请求ID,似乎已经处理好了。请求处理并返回数据后大约一秒钟,错误就会出现在日志中。我还检查了事件查看器,在错误的时间范围内没有任何可疑之处。
如何解决此问题?
Windows 2016服务器已安装.NET Core 2.2.6运行时。
我对 .NET Core 的各种代码分析器有点困惑。
如果您创建默认的 .NET Core Web 项目,您将获得Microsoft.CodeAnalysis.Analyzers.
另外,在NuGet上,还有Microsoft.CodeQuality.Analyzers(注意名称上的细微差别)。安装后,我发现它包含了更多的规则。
最后,还有Microsoft.CodeAnalysis.FxCopAnalyzers,它似乎包含Microsoft.CodeQuality.Analyzers。
Microsoft.CodeAnalysis.Analyzers那么、Microsoft.CodeQuality.Analyzers和 之间到底是什么关系呢Microsoft.CodeAnalysis.FxCopAnalyzers?我的项目应该有什么?
PS 创建新项目后,我在 NuGet 中搜索Microsoft.CodeAnalysis.Analyzers包(该包已存在于我的项目中)。它找到它并指出我的项目有 v1.1 并且需要将其升级到 v2.9.4。然而,根据 NuGet 的说法,v1.1 于 2015 年发布。这没有任何意义,因为我使用的是 VS2019,并且该分析器在 2015 年至 2019 年间发布了大量版本。
但是,当我将软件包升级到 2.9.4 时,分析器具有与 v1.1 相同的 3 条规则。那么我到底要升级什么?
我有一个非常大的VB6代码库,有大量的第三方控件.想将其移至.NET.重写它是不可能的 - 客户认为没花钱去做同样的事情.使用内置升级向导迁移到.NET基本上是不起作用的.
有没有人从http://www.vbmigration.com/尝试过VB迁移合作伙伴. 如果是这样,有什么样的体验?
我有一个表格,上面有很多控件.如何检测鼠标何时离开表格?我已尝试为每个控件和表单连接一个MouseLeave事件,但这不起作用,因为当鼠标经过控件时,这些事件会一直触发.有没有一种实际有效的方法.