2017-06-09 96 views
0

我想在.NET Lambda中使用.NET Framework 4.7解決方案和.NET Core解決方案之間共享代碼。.NET Framework 4.7中的.NET標準類庫項目

我已經創建了一個.NET Standard 1.6類庫項目,並已將一些代碼從.NET Framework 4.7解決方案移到此項目中以便共享它。

除了一件事情之外,所有工作都很好 - 代碼是由.NET解決方案中的BinaryFormatter序列化的DTO類。

例如:

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

我創建了一個填充工具使代碼在.NET標準項目編譯。

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

.NET標準項目作爲Nuget包發佈到TeamCity中的Nuget服務器。

在.NET Framework解決方案,我(非常正確)收到此錯誤:

Error CS0433 The type 'SerializableAttribute' exists in both 'AutoGuru.Shared.Quoting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' and 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'

有沒有在.NET 1.6標準類庫使用的BinaryFormatter一個類的方法嗎?

回答

2

您將無法使用使用.NET的核心運行時的BinaryFormatter序列化,但你至少可以交叉編譯使用這個NuGet包

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

不過,請注意組件,.NET標準結合是一團糟,沒有大量的程序集重定向,你的代碼會很好地編譯,但是在運行時拋出程序集沒有發現異常。據說.NET標準2.0將解決這個問題,但我並沒有屏住呼吸。

相關問題