是否有支持可移植类库的日志框架?我在Nuget上搜索但未找到任何内容.
谢谢,
我在.NET 4.5中有以下代码行,我试图构建为可移植类库.它的目的是获得汇编版本:
this.GetType().Assembly.GetName().Version.Major;
Run Code Online (Sandbox Code Playgroud)
问题是Assembly.GetName()在PCL中不可用.有没有办法在PCL中获得汇编版本?
我知道可以解析Assembly.FullName,但我想要一个更好的解决方案.
是否有System.Web中包含的HttpUtility.ParseQueryString的可移植类库(PCL)版本或我可以使用的一些代码?我想读一个非常复杂的URL.
F#2.0发行版有一个为WindowsPhone 7.1/Silverlight 4编译的FSharp.Core版本,但F#3.0没有编译,便携版本只支持Silverlight 5或Windows Phone 8.有人能够编译FSharp版本.针对Silverlight 4或Windows Phone 7.1的F#3.0核心源代码?需要什么定义?
编辑:
在fsharp编译器github repo上,有一个名为portable-net4 + sl4 + wp71 + win8的目标,但实际上是可移植类库Profile47,据说它只支持.NET 4.5,Silverlight 5.0和Windows Store应用程序.它与VS2012安装的相同.如果您尝试将其与WP 7.1项目一起使用,它将在运行时失败,抱怨缺少IStructuralEquatable.它应该真的命名为portable-net45 + sl5 + win8.proj文件中也有一个wp7目标,但它目前还没有编译
我最近在构建服务器中构建的应用程序中添加了一些自定义的可移植类库项目.构建工作正常,但在此之后它停止工作并向我显示以下消息:
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(983,5):警告MSB3644:框架".NETPortable,Version = v4.0,Profile = Profile136"的引用程序集不是找到.
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1578,5):警告MSB3270:正在构建的项目的处理器体系结构"MSIL"与处理器体系结构之间存在不匹配引用"C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll","AMD64".
错误CS0234:命名空间"系统"中不存在类型或命名空间名称"Linq"(您是否缺少程序集引用?)
构建服务器规范:
该解决方案是.NET 4.0应用程序,可移植项目仅针对.NET4.0 + e Silverlight 5.

我检查了我的开发机器(Windows 8,Visual Studio 2012).确实有一个文件夹"C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile136"(事实上,.NET 4.0的配置文件最多可达158).但是,在构建计算机中,只有最多131个配置文件的文件夹.
便携式类库工具是最新的吗?它似乎错过了为最新平台安装配置文件.
UPDATE
我将开发机器的".NETPortable\v4.0\Profile\Profile136"复制到构建服务器,现在应用程序已成功构建.我仍然想知道为什么安装Portable Class Library Tools不能开箱即用.
我正在开发一个Xamarin Forms移动应用程序,它有一个包含SearchBar,ListView和Map控件的页面.列表视图包含一个地址列表,这些地址在地图上反映为引脚.
当用户在SearchBar中键入时,ListView会自动更新(通过ViewModel绑定).过滤列表数据源的ViewModel方法看起来像这样......
void FilterList()
{
listDataSource = new ObservableCollection<location>(
locationData.Where(l => l.Address.Contains(searchBar.Text))
);
// ***** Now, update the map pins using the data in listDataSource
}
Run Code Online (Sandbox Code Playgroud)
我希望更新Map,因为ListView被过滤,但不是在每个按键上,因为这可能每秒发生多次.基本上,我想在更新Map之前在每个FilterList事件中进行"滚动暂停".在伪代码中......
// ***** Now, update the map pins using the data in listDataSource
if (a previously-requested map update is pending)
{
// Cancel the pending map update request
}
// Request a new map update in 1000ms using [listDataSource]
Run Code Online (Sandbox Code Playgroud)
可以使用可移植类库中提供的Stopwatch类来完成此操作,但我怀疑使用Tasks可以实现更清晰/更好的方法.
任何人都可以建议一个"更聪明" PCL兼容的方式来做到这一点?
c# mvvm task-parallel-library portable-class-library xamarin.forms
我最近为我的PCL编写了支持的平台,其中一个是其他PCL.如果我的库(针对.NET Framework 4.5和Windows/Phone 8.1)也可以在.NET Core项目中使用,我感到很困惑.
据我所知,PCL允许您跨多个平台共享代码而无需重新编译,而.NET Core也可以这样做.唯一的区别是,.NET的核心目标一个数更多的平台,即OS X和Linux,并且是开源的.
基本上,我看不出.NET Core 与PC 重塑PCL有什么不同,并说"请注意我们要开源并针对非Windows平台!"
那么底线是PCL与.NET Core兼容,反之亦然?他们之间有什么区别?
我正在尝试构建一个可移植的类库,为其他类/应用程序生成OAuth URL.这个使用OAuth的类库必须是一个可移植的类库,因此它可以与我正在构建的DropBox API的不同版本一起使用.
此类的一部分需要生成SHA1哈希以生成oauth_signature.
我知道可移植类库不支持System.Security.Cryptography,所以无论如何这个类可以生成没有该类的SHA1哈希?
最近我们开始研究一个新项目,其中包括Windows 8 Metro,Windows Phone和桌面应用程序的客户端.决定使用MVVM模式作为主要架构,因为在项目之间共享ViewModel对我们来说是更可接受的解决方案.
我们决定为此目的使用可移植类库,但问题是在我们尝试添加对适当库的引用后,从Visualstudio 2012扩展库下载并安装SQLite for Windows运行时,我们根本看不到这些库.这让我们想到,在Portable类库项目中不可能使用SQLite.
也许你已经完成了一些并且知道我们实现这种功能的方式?请提供正确的方法来开发此任务,因为使用SQLite并且在开发的这个阶段具有可重用的代码非常重要
我正在将现有的.NET类库移植到可移植类库..NET库广泛使用ICloneable接口,该接口未包含在可移植子集中.
通常,我在.NET类库中遇到类似这样的类定义:
public class Foo<T> where T : ICloneable
{
public void Bar(T item) {
var x = item.Clone();
...
}
}
Run Code Online (Sandbox Code Playgroud)
如何将此代码成功移植到可移植类库中,我该怎么办?我是否必须重写Clone方法调用,或者是否有较少侵入性的解决方法?
我不能简单地删除泛型类型约束,where T : ICloneable因为该Bar方法将无法编译.
我可以编写一个替换接口来代替ICloneable在移植代码中使用:
public interface IPCLCloneable {
object Clone();
}
Run Code Online (Sandbox Code Playgroud)
只要我只实现Foo<T>了实现的类,这就可以工作IPCLCloneable,但是它不能用于实现的核心库中的类型ICloneable,例如Array:
var x = new Foo<int[]>(); // Compilation error in PCL library
Run Code Online (Sandbox Code Playgroud)
(为了完整起见,应该指出ICloneable接口未在可移植子集核心库中显式实现,因为它不存在,但该object Clone()方法确实存在于可移植子集Array类中,因此对于数组实现,例如int[].)
我还有其他选择吗?