2015-09-14 4 views
5

Я создал новое приложение Xamarin.Android и добавил к нему несколько активов. Эти активы доступны в нескольких разрешениях, поэтому я поместил их в свои соответствующие папки drawable-XXX в папку Resources. В результате этого произошла ошибка:Как обойти ограничения папки проекта Visual Studio F # на Xamarin.Android?

The project 'XXXX.fsproj' could not be opened because opening it would cause a folder to be rendered multiple times in the solution explorer. One such problematic item is 'Resource\drawable-hdpi\pencil.png'

Это связано с плохой структурой структуры папок F #. Обычно мне не нужно использовать папки вообще в проектах F #, но в этом конкретном случае это необходимо из-за того, как Android имеет дело с ресурсами. Проект загружается отлично в Xamarin Studio, но в Visual Studio этого нет.

Проект довольно большой, что означает, что мне (и другим людям) потребуется добавить много файлов, поэтому ручные подходы like this one бесполезны, поскольку они слишком трудоемки.

Я прочитал official docs, но там нет ничего, что говорит о том, что есть специальный способ обработки добавлений файлов на VS или другой способ справиться с этим ограничением. Мой вопрос: такая вещь существует? Могу ли я добавить эти файлы по-другому, так что мне не нужна сложная структура на VS? Будет ли я вынужден использовать C# или Xamarin Studio против моей воли?

ответ

5

Ссылки на файлы папок должны быть указаны вместе, они не могут быть перемежены с файлами в другом месте. Сортировка ссылок, и все будет хорошо.

EDIT, для ясности:

<ItemGroup> 
<Compile Include="folder\file1.fs" /> 
<Compile Include="file.fs" /> <-- this can't be between the folder files, all folder files have to be listed together 
<Compile Include="folder\file2.fs" /> 
</ItemGroup> 
+0

О, мальчик, это был довольно специфический! Спасибо, Юджин, ты спас день :) –

+0

Извините, что такое «ссылки на файлы папок»? – robkuz

+0

@robkuz отредактирован для четкости –

1

К сожалению, стандартная интеграция Visual Studio не поддерживает папки в проектах F #.

Ваш лучший вариант - использовать Visual F# PowerTools. Это добавляет некоторую поддержку для folders to F# projects и поэтому может работать достаточно хорошо, чтобы делать то, что вам нужно. Если это не так, то Visual F # PowerTools является проектом с открытым исходным кодом и всегда приветствует вклады!

Я мало знаю о типах проектов Xamarin для Android, но я думаю, что добавление проекта C#, являющегося просто пустой библиотекой DLL для хранения ресурсов, также является разумной альтернативой. (Тогда вы должны иметь возможность ссылаться на это из F # и загружать все ресурсы оттуда.)

+0

Я уже установил PowerTools, и кажется, что это не работает в этом случае. Что касается последней части, то csproj не будет работать, потому что на этапе сборки Xamarin генерирует файл с использованием этих ресурсов, чтобы на них можно было ссылаться в другом месте кода, поэтому он должен быть в одном проекте. Странно, что Xamarin утверждает, что F # и VS поддерживаются, поэтому это действительно должно работать. Спасибо за ваш ответ, хотя :) –

+1

Хм, можете ли вы открыть проблему с VFPT с конкретным описанием сценария, который не работает? Они довольно активны и могут по крайней мере дать вам подсказку, что нужно изменить в исходном коде, чтобы заставить его работать! –

+1

Если бы у меня была эта проблема, я бы, вероятно, взломал скрипт F #, чтобы изменить файл 'fsproj' и включить все файлы в какую-либо подпапку. В конце концов, это всего лишь XML-файл :-). Это, безусловно, очень хакерский метод, но он может работать до тех пор, пока это не будет разрешено в VFPT или Xamarin. –

Смежные вопросы