我刚才读过这篇文章:https: //blog.xamarin.com/net-standard-library-support-for-xamarin/
因此,我将所有库从可移植库转换为.NET Standard(1.4).我这样做是因为文章说"这个PCL现在需要升级到目标.NET标准库,可以在项目属性中找到它."
但是,我无法弄清楚如何构建一个面向.NET Standard的Xamarin Forms项目.我克隆了Xamarin Forms样本,并打开了MasterDetailPage项目.我按照说明进入项目属性并从便携式切换到.NET Standard.我立即收到错误,告诉我需要选择NuGet 3.0支持.我对此很好,但我该怎么做?
我发现如果我删除Xamarin Forms NuGet包,我就可以切换到.NET Standard.但是,一旦我这样做了,我就无法添加Xamarin Forms NuGet包了.它只是一直在失败.与文章所说的相反,我无法添加对.NET标准库的引用.当我尝试在我的解决方案中添加对现有.NET标准库的引用时,Visual Studio只是给出了一个错误,指出该库不兼容.我应该针对Xamarin Forms定位哪个版本的.NET Standard?
如何使用Xamarin Forms支持编译.NET标准库?
我正在尝试加载一个 png 文件(其他格式是一个选项),以便在面向 .netstandard 1.4 的项目中的 OpenTk 中渲染为纹理,该项目不支持 System.Drawing 库。
我可以为此找到的每个 OpenTk 示例都取决于 System.Drawing.Bitmap 类。
这是我想在没有 System.Drawing 库的情况下创建的那种方法的示例,来自此Jitter Physics OpenGL Demo的纹理类
void CreateFromBitmap(System.Drawing.Bitmap image)
{
image.RotateFlip(RotateFlipType.RotateNoneFlipY);
GL.GenTextures(1, out name);
GL.BindTexture(TextureTarget.Texture2D, name);
// set pixel unpacking mode
GL.PixelStore(PixelStoreParameter.UnpackSwapBytes, 0);
GL.PixelStore(PixelStoreParameter.PackRowLength, 0);
GL.PixelStore(PixelStoreParameter.UnpackAlignment, 1);
GL.PixelStore(PixelStoreParameter.UnpackSkipRows, 0);
GL.PixelStore(PixelStoreParameter.UnpackSkipPixels, 0);
BitmapData data = image.LockBits(new System.Drawing.Rectangle(0, 0, image.Width, image.Height),
ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
// Requieres OpenGL >= 1.4
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.GenerateMipmap, 1); // 1 = True
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0,
OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0); …
Run Code Online (Sandbox Code Playgroud) 我有一个针对netstandard1.2的旧类库,我们需要获取引用该库的程序集名称。
使用以下代码为我们提供类库的名称,它可以正常工作。
typeof(MyHelperClass).GetTypeInfo().Assembly
Run Code Online (Sandbox Code Playgroud)
但是我们需要获取引用的程序集名称。以下代码对于标准.net可以正常工作,但对于.net核心则不能正常工作
Assembly.GetEntryAssembly().GetName().Name;
Run Code Online (Sandbox Code Playgroud)
是否有一种方法可以在针对.net standard 1.2时使用.net core获取执行程序集的名称?
.Net Core 中是否有 CacheDependency 类?好像还没有实现。
我们有任何替代方法或解决方法吗?或者有没有关于实施这个类的任何未来计划?
这是.net框架支持的非常有用的功能,如果没有它,我如何在缓存和文件之间建立依赖关系?
caching .net-core asp.net-core asp.net-core-2.0 .net-standard
正如标题所说,有没有办法在 .NET Standard 2.0 中获得总(已安装)系统 RAM?我所有的搜索都只出现在 .NET Framework 解决方案中。
我正在使用Refit编写一些 API ,这产生了奇迹,但我在找出对返回的数据执行一些任意处理的好方法(如“干净”、“正确”)时遇到了一些麻烦。
例如,请考虑以下代码:
public interface ISomeService
{
[Get("/someurl/{thing}.json")]
Task<Data> GetThingAsync([AliasAs("thing")] string thing);
}
Run Code Online (Sandbox Code Playgroud)
现在,我见过的许多 REST API 都有将实际数据(如“有用”数据)深入到 JSON 响应中的不幸习惯。说,实际的 JSON 具有以下结构:
{
"a" = {
"b" = {
"data" = {
...
}
Run Code Online (Sandbox Code Playgroud)
现在,通常我只会映射所有必要的模型,这将允许 Refit 正确反序列化响应。这虽然使 API 使用起来有点笨拙,因为每次使用它时我都必须执行以下操作:
public interface ISomeService
{
[Get("/someurl/{thing}.json")]
Task<Data> GetThingAsync([AliasAs("thing")] string thing);
}
Run Code Online (Sandbox Code Playgroud)
我要说的是,这两个外部模型实际上只是容器,不需要向用户公开。或者,假设该Data
属性是一个具有另一个属性的模型IEnumerable
,我可能只想直接将其返回给用户。
我不知道如何做到这一点,而不必为每个服务编写无用的包装类,其中每个服务还必须明显重复接口等中的所有 XML 注释,从而导致更多无用的代码四处飘散。
我只想有一些简单的、可选的Func<T, TResult>
等价物,它在给定的 Refit API 的结果上被调用,并在将其呈现给用户之前对返回的数据进行一些修改。
昨天我被介绍到 c# 和 Visual Studio,我知道这是一个非常简单的问题。但是我们正在将代码从 .NET 框架移植到 .net CORE。我的工作是将旧代码中存在的包/库安装到新代码中(解决方案的目标框架是 2.1)
但是如何在 NuGet 数据包管理器中看到 CORE 2.1 支持特定库?例如,我可以看看这是否支持图像上的 CORE,或者所有可用的包是否与 core 2.0 兼容,因为这是目标框架?
public class Class1
{
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
}
}
Run Code Online (Sandbox Code Playgroud)
请为这两个接口添加什么引用?或者你应该只在网站项目中使用这些接口?
.NET Core 3.1 类库的结果也相同。视觉工作室 16.4.4
非常感谢任何帮助。
我需要做一个简短的前提:我是一名拥有 20 多年经验的软件架构师,而不是一个初级的问路人。这并不是说“我什么都知道”(实际上恰恰相反),而是为了提供上下文并说明我遇到了对我认为是常识和最佳实践的事情的合理怀疑,并且已经这样做了所有这些时间。
我正在为不同的客户从事不同的项目。我总是检查方法的参数是否为空和其他无效状态。您可以在我的代码中找到的常见前提条件检查是:
if (param == null) { throw new ArgumentNullException(nameof(param)); }
Run Code Online (Sandbox Code Playgroud)
或者
this.myField = myParam ?? throw new ArgumentNullException(nameof(myParam));
Run Code Online (Sandbox Code Playgroud)
还要记住,我很少使用异常,我不使用异常进行用户输入验证,我只是使用它们来检查和/或发出代码中的无效状态,从而导致编程错误。在我的代码中找到 try/catch 块是非常罕见的。
我的一个客户刚刚问我,没有太多争论的余地,用自定义例外来代替任何类似的事件。这意味着我要定义 CustomerNameArgumentNullException、CustomerNameFileNotFoundException 等,并在我将使用标准异常的任何地方使用它们。
现在我会遵守,我无权辩论客户的请求,但是他们的首席程序员在这一点上非常强调这是正确的方法,使用默认异常会使代码可读性降低,并且自定义异常会产生更多轻松查看 Azure Application Insights 中的内容。我试图指出他拥有引发异常的方法的完全限定名称,因此他可以知道哪个程序,哪个程序集和命名空间等等,但同样,没有太多争论的余地,这不是我的地方这样做。
所以我一直在想他是否真的是对的,而且我一直都在做错误的例外。如果有人有更多的见解和/或我可以阅读的一些材料来支持这一理论。
谢谢。
是否可以在没有 ASP.NET Core Web 应用程序项目的独立 .NET Standard 项目中使用依赖项注入?
由于没有startup.cs
文件,我很想知道这是否可能,以及如何做到这一点?