我正在准备一个全新的ASP.NET MVC 5.1解决方案.我正在添加一堆NuGet包,并与Zurb Foundation等进行设置.
作为其中的一部分,我添加了对内部NuGet包的引用,这是一个可移植类库,我认为这会导致构建服务器出现问题.
TeamCity失败了构建:
"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>
Run Code Online (Sandbox Code Playgroud)
但问题尚未解决.
在MSDN上,我Portable Class Library在版本信息下注意到有关a的部分.
请参阅System.Object示例.http://msdn.microsoft.com/en-us/library/system.object.aspx
我做了一个简短的谷歌搜索,找不到任何关于Portable Class Library.这里有谁知道它是什么或在哪里可以找到更多相关信息?
我听说过
所有这些都被解释为"完整.Net的一个子集,允许您定位多个平台".所以我的问题是
(我的具体情况:我有一个针对.Net 2.0,.Net 4.5和UWP的库.针对UWP需要创建一个新的VS项目并链接所有现有文件,这是一个巨大的痛苦.现在有人告诉我它没有不适用于PCL,从它的声音我必须再次为.Net标准!?)
我正在将.NET Framework C#类库移植到可移植类库.一个反复出现的问题是如何处理使用该[Serializable]属性修饰的类,因为此属性不是可移植类库子集的一部分.相反,可移植类库子集中的序列化功能似乎由DataContractAttribute覆盖.
[Serializable]用[DataContract]属性替换就足够了(暗示所有需要序列化的字段和属性也需要进行修饰[DataMember])?[Serializable]应用?鉴于[DataContract]并[DataMember]使用,我正在考虑改变代码沿着以下行.这种方法有明显的缺陷吗?有没有办法制定同样的东西,而不是那么冗长?
#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; set; }
...
}
Run Code Online (Sandbox Code Playgroud) c# serialization datacontract serializable portable-class-library
因为使用Visual Studio 2012 RC,我们在剃刀视图中使用可移植类库(.net 4.5和metro profile)中的类时会得到HttpCompileException.
例外:(德语译成谷歌翻译,对不起)
System.Web.HttpCompileException (0x80004005):
c:\Users\user\AppData\Local\Temp\Temporary ASP.NET
Files\root\1995167a\126b7c4d\App_Web_index.cshtml.1fbcdbb1.zaniprm5.0.cs(29):
error CS0012: The type 'System.Object' is not in a referenced assembly is
defined. Add a reference to the Assembly "System.Runtime, Version = 4.0.0.0,
Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" added.
at
System.Web.Compilation.AssemblyBuilder.Compile()
System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
...
Run Code Online (Sandbox Code Playgroud)
解决方案结构
由于Visual Studio 2012 RC不再可能添加引用"System.Runtime".
我正在使用xamarin表单pcl开发一个应用程序.我需要一个带圆角的stacklayout.我也尝试了圆角容器的框架,但没有可用的角半径属性.我找不到ios,android,uwp,windows 8.1的渲染器.
在Noda Time 1.3.1中,我们的.csproj文件引用了Profile 328,我们的.nuspec文件将结果放入
lib\portable-net4+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1+XamariniOS1
Run Code Online (Sandbox Code Playgroud)
对于Noda Time 2.0,我已将所有内容移至DNX/DNU(当然很快就会成为dotnet cli).但是,我们现在希望构建一个定期更新的包,其中包含来自IANA的最新时区信息.我们将构建一个版本,依赖于Noda Time 1.3.1,另一个版本依赖于Noda Time 2.0.0.
我喜欢到DNX/DNU内做到这一切依然,但它是我不清楚是否有告诉DNX/DNU这个目标框架的任何方式.请注意,我想让1.3.1的所有当前用户都可以使用它,它也依赖于1.3.1,因此我认为目标框架集基本上必须是相同的.
我尝试过的框架:
在每种情况下,都会dnu restore显示以下形式的错误:
"便携式-net40 + SL5 + win8的+ wpa81 + WP8" 是不受支持的框架.
我有一个可怕的怀疑,这基本上不是一个支持的用例,我需要坚持这个特定部分的常规csproj文件,但我认为值得问,看看我是否遗漏了一些东西.
对于Noda Time版本1.1,主要目标是构建可移植类库的风格,主要是为了支持Windows Phone和Windows应用商店应用.这意味着失去一些功能,因此我们构建了桌面配置和PCL配置(针对每个调试,发布和"签名发布").
为避免必须使用umpteen项目文件,所有6个配置都存在于同一个项目文件中.该项目文件被定制为生成一个名为"便携性"属性,该属性设置为"PCL"或"桌面",就像这样:
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
然后,我们根据上述属性为便携式和桌面式设置了单独的属性组.这是项目类型什么定义为"类库"或"便携式类库"(带沿OutputType的Library,这是共享的):
<!-- Desktop-specific properties -->
<PropertyGroup Condition="'$(Portability)' == 'Desktop'">
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
</PropertyGroup>
<!-- PCL-specific properties -->
<PropertyGroup Condition="'$(Portability)' == 'PCL'">
<MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>
<ProjectGuid>{c78f6992-28d7-45c9-a4c1-6eaa649f3247}</ProjectGuid>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile2</TargetFrameworkProfile>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup> …Run Code Online (Sandbox Code Playgroud) 我在便携式库/ Windows Store中找不到计时器.(定位.net 4.5和Windows Store又称Metro)
有没有人知道如何创建某种计时事件?
我需要一些秒表,所以这应该每秒刷新一次
我目前正在使用System.Net.Http.HttpClient进行跨平台支持.
我读到,为每个请求实例化HttpClient对象并不是一个好习惯,并且应尽可能重用它.
现在我在为服务编写客户端库时遇到问题.某些API调用需要具有特定标头,有些必须不包含此特定标头.
似乎我只能操纵将随每个请求发送的"DefaultRequestHeaders".
实际发出请求时是否有一个选项,例如"client.PostAsync()"来修改仅针对特定请求的标头?
(信息:请求可以是多线程的).
提前致谢!
c# ×7
.net ×3
.net-4.5 ×1
.net-core ×1
asp.net ×1
asp.net-mvc ×1
datacontract ×1
dnu ×1
httpclient ×1
msbuild ×1
nuget ×1
razor ×1
serializable ×1
timer ×1
uwp ×1