我正在将常规.net框架旧版库迁移到.net标准库中。如下图所示,旧版库曾经有一个始终复制到Output文件夹的文件:
在该库中,有一个旧类可以在访问磁盘上的文件之前测试文件夹的存在,如下所示:
namespace Library
{
public class LegacyClass
{
public void AccessFile()
{
string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
bool directoryExists = Directory.Exists(Path.Combine(path, "Files"));
// It does exist in the Console app. It does not in the Android app.
// ... And then access the file.
}
}
}
虽然它与控制台应用程序一起使用,但在空白的Xamarin应用程序中却不起作用:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
//
var legacyClass = new LegacyClass();
legacyClass.AccessFile();
}
LegacyClass
找不到“文件”文件夹:
问题
Xamarin.Android
应用程序如何访问将Copy to Output Directory
设置为CopyAlways
的文件?
答案 0 :(得分:1)
您无法做到这一点,但是可以使用嵌入式资源轻松实现目标。
https://developer.xamarin.com/samples/mobile/EmbeddedResources/
相反,您必须将文件添加到csproj
,然后可以在该文件的属性中将其生成操作设置为Embedded Resource
。 (在解决方案资源管理器中选择文件,然后按F4键。)
在运行时,您可以使用以下命令将Stream
返回到您的文件:
Assembly.Load("MyProjectWhichContainsTheFile").GetManifestResourceStream("MyFile.txt")