对于Noda Time 1.1版,主要目标是构build一个可移植类库的风格,主要是为了支持Windows Phone和Windows Store应用程序。 这意味着失去了一些function,所以我们build立一个桌面configuration和一个PCLconfiguration(对于每个debugging,发布和“签名版本”)。 为了避免不必要的工程文件,所有6个configuration都存在于同一个工程文件中。 项目文件被自定义为生成一个名为“Portability”的属性,该属性设置为“PCL”或“Desktop”,如下所示: <!– Set the custom Portability property based on configuration –> <PropertyGroup> <Portability Condition="'$(Configuration)' == 'Debug Portable'">PCL</Portability> <Portability Condition="'$(Configuration)' == 'Release Portable'">PCL</Portability> <Portability Condition="'$(Configuration)' == 'Signed Release Portable'">PCL</Portability> <!– Default to desktop if not explicitly set above –> <Portability Condition="'$(Portability)' == ''">Desktop</Portability> </PropertyGroup> 然后,我们根据上述属性为便携式和桌面使用单独的属性组。 这就是将项目types定义为“类库”或“可移植类库”(以及共享Librarytypes): <!– Desktop-specific properties […]
我将.NET Framework C#类库移植到可移植类库中。 一个反复出现的问题是如何处理用[Serializable]属性修饰的类,因为这个属性不是可移植类库子集的一部分。 可移植类库子集中的序列化function似乎被DataContractAttribute覆盖。 为了在可移植类库中保留尽可能多的function,用[DataContract]属性replace[Serializable]是否足够(暗示所有需要序列化的字段和属性都需要用[DataMember]作为装饰[DataMember]好)? 什么(如果有的话),我不能用这种方法,我可以用[Serializable]应用做什么? 有没有一个侵入性的方法? 鉴于使用了[DataContract]和[DataMember] ,我正在考虑按照以下几行更改代码。 这种方法有没有明显的缺陷? 有没有什么办法可以减less冗长的相同事物? #if PORTABLE [DataContract] #else [Serializable] #endif public class SerializableClass : SerializableBaseClass { … #if !PORTABLE protected SerializableClass(SerializationInfo info, StreamingContext context) : base(info, context) { } #endif … #if PORTABLE [DataMember] #endif private Type1 _serializableField; #if PORTABLE [DataMember] #endif private Type2 SerializableProperty { get; […]
在MSDN上,我注意到版本信息下的一个关于可Portable Class Library的部分。 有关示例,请参阅System.Object 。 http://msdn.microsoft.com/en-us/library/system.object.aspx 我做了简短的Googlesearch,找不到关于Portable Class Library任何内容。 有没有人知道这是什么或在哪里可以find更多的信息?
我正在准备一个全新的ASP.NET MVC 5.1解决scheme。 我添加了一些NuGet包,并与Zurb基金会合作 作为其中的一部分,我添加了一个可移植的类库的内部NuGet包的引用,我认为这是造成构build服务器的问题。 TeamCity的构build失败: types“System.Object”是在未引用的程序集中定义的。 您必须添加对程序集“System.Runtime,Version = 4.0.0.0的引用 我最初在编译Razor网页时添加了相同或类似错误的修复,修复了web.config <compilation … > <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </assemblies> </compilation> 但是这个问题没有解决。