Costura.Fody
参考:
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0" />
Microsoft.Extensions.Configuration.UserSecrets
此包用于 通过 .NET Core 的配置系统访问存储在secrets.json
文件中的数据
注意: 使用
:
分隔,而不是.
,例如:SecretsKeys:AfdianUserId
补充:
dotnet user-secrets -h
,来查看可以使用的命令dotnet user-secrets list
列出所有的用户机密dotnet user-secrets set WeChatAppKey "X3423FEED2435DD"
设置一个用户机密,其中 WebChatAppKey 为键,后面的是值。dotnet user-secrets list
来查看设置的键值对。User Secret Manager
命令 | 描述 | 语法 |
---|---|---|
clear | 删除程序中所有的secrets | dotnet user-secrets clear |
list | 列举程序中所有的secrets | dotnet user-secrets list |
remove | 删除指定的secret | dotnet user-secrets remove NameOfSecret |
set | 设置secret | dotnet user-secrets set NameOfSecret ValueOfSecret |
参考:
<PackageReference Include="Xunit.DependencyInjection" Version="8.3.0" />
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace Afdian.Sdk.Tests
{
public class Startup
{
public void ConfigureHost(IHostBuilder hostBuilder)
{
hostBuilder.ConfigureHostConfiguration(configurationBuilder =>
{
configurationBuilder.AddUserSecrets("0377da50-fdb8-4811-bab1-7299c2657571", true);
});
}
public void ConfigureServices(IServiceCollection services)
{
//services.AddTransient<IDependency, DependencyClass>();
}
}
}
注意:
0377da50-fdb8-4811-bab1-7299c2657571
需更改为你项目 (Afdian.Sdk.Tests.csproj
) 中的<UserSecretsId>0377da50-fdb8-4811-bab1-7299c2657571</UserSecretsId>
Microsoft.Extensions.SecretManager.Tools
经过测试, 在 Visual Studio Enterprise 2022
中已经不需要此包,
不安装此包也可以使用
补充: .NET Core 图像处理 Image 依赖于
System.Drawing.Common
包
看上方绿线
关于 System.Drawing.Common
包 的一些问题
参考:
在 .NET 6 之前,使用 System.Drawing.Common 包不会产生任何编译时警告,也不会引发任何运行时异常。
从 .NET 6 开始,当为非 Windows 操作系统编译引用代码时,平台分析器会发出编译时警告。 此外,除非设置了配置选项,否则将引发以下运行时异常:
System.TypeInitializationException : The type initializer for 'Gdip' threw an exception.
---- System.PlatformNotSupportedException : System.Drawing.Common is not supported on non-Windows platforms. See https://aka.ms/systemdrawingnonwindows for more information.
Stack Trace:
at System.Drawing.SafeNativeMethods.Gdip.GdipCreateBitmapFromFile(String filename, IntPtr& bitmap)
/_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(42,0): at System.Drawing.Bitmap..ctor(String filename, Boolean useIcm)
/_/src/libraries/System.Drawing.Common/src/System/Drawing/Bitmap.cs(25,0): at System.Drawing.Bitmap..ctor(String filename)
/_/src/libraries/System.Resources.ResourceManager/tests/ResourceManagerTests.cs(270,0): at System.Resources.Tests.ResourceManagerTests.EnglishImageResourceData()+MoveNext()
/_/src/libraries/System.Linq/src/System/Linq/Select.cs(136,0): at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
----- Inner Stack Trace -----
/_/src/libraries/System.Drawing.Common/src/System/Drawing/LibraryResolver.cs(31,0): at System.Drawing.LibraryResolver.EnsureRegistered()
/_/src/libraries/System.Drawing.Common/src/System/Drawing/GdiplusNative.Unix.cs(65,0): at System.Drawing.SafeNativeMethods.Gdip.PlatformInitialize()
/_/src/libraries/System.Drawing.Common/src/System/Drawing/Gdiplus.cs(27,0): at System.Drawing.SafeNativeMethods.Gdip..cctor()
由于 System.Drawing.Common
被设计为 Windows 技术的精简包装器,因此其跨平台实现欠佳。
libgdiplus
是本机端 System.Drawing.Common
跨平台实现的主要提供程序。 libgdiplus
实际上是对 System.Drawing.Common
所依赖的 Windows 部分的重新实现。 该实现使 libgdiplus
成为一个重要的组件。 它大约有 30,000 行 C 代码,大部分未经测试,而且缺少很多功能。 libgdiplus
还具有许多用于图像处理和文本呈现的外部依赖项,例如 cairo
、pango
和其他本机库。 这些依赖项使得维护和交付组件更具挑战性。 自从包含 Mono 跨平台实现以来,我们已将许多从未得到修复的问题重定向到 libgdiplus
。 相比之下,我们采用的其他外部依赖项,例如 icu
或 openssl
,都是高质量的库。 使 libgdiplus
的功能集和质量与 .NET 堆栈的其余部分相媲美是不可行的。
通过对 NuGet 包的分析,我们观察到 System.Drawing.Common
主要用于跨平台的图像处理,例如 QR 代码生成器和文本呈现。 由于我们的跨平台图形支持不完整,我们还没有注意到大量的图形使用。 System.Drawing.Common
在非 Windows 环境中的使用通常得到 SkiaSharp 和 ImageSharp 的良好支持。
System.Drawing.Common
将仅在 Windows 窗体和 GDI+ 的上下文中继续演变。
若要将这些 API 用于跨平台应用,请迁移到以下库之一:
或者,可通过将 runtimeconfig.json 文件中的 System.Drawing.EnableUnixSupport
运行时配置开关设置为 true
来启用对非 Windows 平台的支持:
{
"runtimeOptions": {
"configProperties": {
"System.Drawing.EnableUnixSupport": true
}
}
}
添加此配置开关是为了让严重依赖此包的跨平台应用有时间迁移到更新式的库。 但是,不会修复非 Windows bug。 此外,我们可能会在未来版本中完全删除对非 Windows 平台的支持,即使你使用运行时配置切换启用它也是如此。
备注 尽管运行时开关的名称为
System.Drawing.EnableUnixSupport
,但它适用于各种非 Windows 平台(如 macOS 和 Android),它们通常可被视为 Unix 风格。
参考:
参考:
dotnet build --configuration Release
生成包含引用的包的dll注意: vs 没有提示
<PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
dotnet publish --configuration Release
感谢帮助!
本文作者: yiyun
本文链接: https://moeci.com/posts/分类-dotnet/dotnet-notebook-1/
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!