2013-09-19 3 views
3

В приложении Xamarin iOS мне нужно доставить образец текстового файла с помощью приложения. Когда я запускаю модульный тест для проверки чтения, я получаю сообщение об ошибке, что он не может найти файл. Я попытался разместить различные места, чтобы установить файл, и установил действие как вложенные ресурсы и содержимое, так и во всех случаях получаю ошибку не найденную.xamarin iOS content files

Во-первых, где должны быть помещены файлы, которые будут включены в приложение. Во-вторых, как вы получаете доступ к файлу и к какому пути?

ответ

0

Вы можете разместить файл в корне вашего проекта или в любой подпапке. Обязательно отметьте файл как «Контент». Чтобы прочитать его, просто использовать любой C# файл операции ввода-вывода, например:

string text = System.IO.File.ReadAllText("test.txt"); 

or 

string text = System.IO.File.ReadAllText("path/test.txt"); 

Дорожки будет относительно корня вашего пакета приложения, так что вам не нужно использовать абсолютные пути.

Одно замечание: убедитесь, что обложка ваших путей и имен файлов верна. В симуляторе это не имеет значения, поскольку файловая система OS X обычно не чувствительна к регистру. Тем не менее, iOS чувствительна к регистру, поэтому ошибка в корпусе вызовет исключение при работе на устройстве.

+0

Я согласен, что должен работать. Однако, когда я запускаю модульный тест, он сообщает мне, что файлы не найдены в UnitTest/bin/Debug/Samples/sample.txt, я поместил файл в папку Samples. Я связал папку samples из библиотеки Project с проектным модулем. –

+0

Я бы повторил «обязательно отметьте файл как« Контент », который сказал Джейсон. Это сожгло меня в прошлом. – Carter

+0

Выполнено. Я делаю модульные тесты в этот момент и получаю ошибку, когда пытаюсь запустить тест. Он ищет UnitTest/bin/Debug/Samples/sample.txt в тестовой папке. где находится файл, фактически размещенный во время компиляции отладки? Я искал диск, и он не появляется нигде, кроме тех случаев, когда я помещаю исходный файл в исходный код. –

0

Я бы, вероятно, пошел с Embedded Resource, но тогда вам нужно получить к нему доступ по-другому. Более подробную информацию здесь:

https://developer.xamarin.com/guides/xamarin-forms/working-with/files/

В основном вам нужно использовать отражение, чтобы получить Assembly, а затем вызвать его метод GetManifestResourceStream с соответствующим идентификатором.