繁体   English   中英

.NET Framework 4.7项目中的.NET标准类库

[英].NET Standard Class Library in .NET Framework 4.7 project

我想在用于AWS Lambda的.NET Framework 4.7解决方案和.NET Core解决方案之间共享代码。

我创建了一个.NET Standard 1.6类库项目,并将一些代码从.NET Framework 4.7解决方案移至该项目中以便共享。

除一件事外,其他所有工具都工作正常-该代码用于DTO类,该类由.NET解决方案中的BinaryFormatter序列化。

例如:

[Serializable]
public class BillableOptionalOperationDto
{
    public string OperationDescription { get; set; }
    public string Note { get; set; }
    public decimal UnitPriceIncGst { get; set; }
}

我创建了一个polyfill,以便代码在.NET Standard项目中进行编译。

namespace System
{
    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Delegate)]
    public class SerializableAttribute : Attribute
    {
    }
}

.NET Standard项目作为Nuget包发布到TeamCity中的Nuget Server。

在.NET Framework解决方案中,我(很正确)收到此错误:

错误CS0433类型'SerializableAttribute'在'AutoGuru.Shared.Quinging,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'和'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'中都存在

是否可以在.NET Standard 1.6类库中的类上使用BinaryFormatter?

您将无法使用.NET Core运行时使用BinaryFormatter进行序列化,但至少可以使用此nuget包进行交叉编译

https://www.nuget.org/packages/System.Runtime.Serialization.Formatters/

请注意,尽管使用.NET Standard进行程序集绑定是一团糟,并且无需进行大量的程序集重定向,您的代码就可以正常编译,但会在运行时抛出找不到程序集的异常。 据说.NET Standard 2.0将解决此问题,但我没有屏息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM