2015-09-14 20 views
5

我創建了一個新的Xamarin.Android應用程序,併爲其添加了一些資源。這些資產可用多種分辨率提供,因此我將它們放在Resources文件夾內各自的drawable-XXX文件夾中。這樣做會導致以下錯誤:如何繞過Xamarin.Android上的Visual Studio的F#項目文件夾限制?

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

對文件夾文件的引用必須一起列出,它們不能與散佈在不同位置的文件散佈在一起。排序參考,它會沒事的。

編輯,爲了清楚:

<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解決。 –

相關問題