C# PCL程序集和读取资源文件
我正在读取.Net中针对移动平台的文件,所以我使用PCL。我注意到,如果我添加/更改我的目标平台,我的组装选项会有很大的变化。一般来说,获得PCL中最大装配量的最佳方法是什么 这里有更具体的内容:我想使用C# PCL程序集和读取资源文件,c#,android,.net,portable-class-library,C#,Android,.net,Portable Class Library,我正在读取.Net中针对移动平台的文件,所以我使用PCL。我注意到,如果我添加/更改我的目标平台,我的组装选项会有很大的变化。一般来说,获得PCL中最大装配量的最佳方法是什么 这里有更具体的内容:我想使用System.Reflection.Assembly.getExecutionGassembly()和System.IO.Path 到目前为止,我只能得到其中一个。有没有人找到一种方法把这两个都弄到手 这就是我要实现的类:public类contentprovider实现:IContentProv
System.Reflection.Assembly.getExecutionGassembly()代码>和System.IO.Path
到目前为止,我只能得到其中一个。有没有人找到一种方法把这两个都弄到手
这就是我要实现的类:public类contentprovider实现:IContentProvider
public class ContentProviderImplementation : IContentProvider
{
private static Assembly _CurrentAssembly;
private Assembly CurrentAssembly
{
get
{
if (_CurrentAssembly == null)
{
_CurrentAssembly = Assembly.GetExecutingAssembly();
}
return _CurrentAssembly;
}
}
public StreamReader LoadContent(string relativePath)
{
string localXMLUrl = Path.Combine(Path.GetDirectoryName(CurrentAssembly.GetName().CodeBase), relativePath);
return new StreamReader(File.OpenRead(new Uri(localXMLUrl).LocalPath));
}
}
{
专用静态程序集_CurrentAssembly;
专用程序集当前程序集
{
得到
{
如果(_CurrentAssembly==null)
{
_CurrentAssembly=Assembly.getExecutionGassembly();
}
返回CurrentAssembly;
}
}
公共StreamReader加载内容(字符串相对路径)
{
字符串localXMLUrl=Path.Combine(Path.GetDirectoryName(CurrentAssembly.GetName().CodeBase),relativePath);
返回新的StreamReader(File.OpenRead(新Uri(localXMLUrl.LocalPath));
}
}
在多个移动平台上实现这一点的最佳概念方法是什么(代码细节可以,但我不想要直接的解决方案,除非它只是在正确的PCL程序集上获得范围)?具体来说:IOS、Android、Windows8.1和WindowsPhone
这是最相关的SO问题的答案:
可移植类库允许您使用名称空间和类
存在于您所瞄准的所有平台中。净额4.5
(假设您指的是完整的桌面WinForms/WPF)、Windows 8和
Windows Phone 8的文件访问方式都非常不同,并且具有不同的
可供他们使用的文件。可以从何处访问文件也有所不同
大:嵌入内容;嵌入式资源;隔离储存;
共享文件夹;完整的文件系统。这些不是全部都可以在
你提到的所有平台
简短的回答。你可能不能做你想做的事。文件系统
不同平台的访问权限差别很大,通常必须
每个平台的操作都不同。您可以做的是定义一个
PCL可以访问的文件访问接口(打开、读取、保存等)
使用并创建传递给服务器的特定于平台的实例
根据需要进行PCL
相关SO问题的URL:
而且,我喜欢说话算数。请告诉我是否使用了错误的编程术语。我对软件行业还很陌生!谢谢大家
一般来说,获得PCL中最大装配量的最佳方法是什么
这并不是关于程序集的数量,而是关于您将能够使用的API的更多信息
一般来说,PCL目标平台越少,就能使用越多的API。此外,您选择的所有平台的最新版本,以及您将获得的更多API
对于完全可重用的库,如JSON.NET,您可能希望尽可能多地针对平台。然而,应用程序中PCL的使用通常更受应用程序需求的限制。为了获得最佳体验,针对您今天需要的多个平台,包括您知道明天需要的平台,但不要只勾选所有框,您只需限制自己
我想使用Assembly.getExecutionGassembly()
此API已被弃用(正如Assembly.GetCallingAssembly
)。并不是说你错过了很多。在实例方法中,您只需使用GetType().GetTypeInfo().Assembly
。在静态方法中,您可以将其替换为typeof(您的方法所在的类型)。GetTypeInfo().Assembly
请注意,GetTypeInfo()
是.NET 4.5中添加的一个新方法。在较旧的平台上,只需省略对GetTypeInfo()
的调用。有关更多详细信息,请参阅我们的博客文章
一般来说,获得PCL中最大装配量的最佳方法是什么
这并不是关于程序集的数量,而是关于您将能够使用的API的更多信息
一般来说,PCL目标平台越少,就能使用越多的API。此外,您选择的所有平台的最新版本,以及您将获得的更多API
对于完全可重用的库,如JSON.NET,您可能希望尽可能多地针对平台。然而,应用程序中PCL的使用通常更受应用程序需求的限制。为了获得最佳体验,针对您今天需要的多个平台,包括您知道明天需要的平台,但不要只勾选所有框,您只需限制自己
我想使用Assembly.getExecutionGassembly()
此API已被弃用(正如Assembly.GetCallingAssembly
)。并不是说你错过了很多。在实例方法中,您只需使用GetType().GetTypeInfo().Assembly
。在静态方法中,您可以将其替换为typeof(您的方法所在的类型)。GetTypeInfo().Assembly
请注意,GetTypeInfo()
是.NET 4.5中添加的一个新方法。在较旧的平台上,只需省略对GetTypeInfo()
的调用。有关更多详细信息,请参阅我们的博客文章。我正在使用PCL.Net 4.5配置文件111,在实例方法中我找不到GetTypeInfo(),我是否缺少任何内容?我正在使用PCL.Net 4.5配置文件111,在实例方法中我找不到GetTypeInfo(),我是否缺少任何内容?