2014-04-03 11 views
14

In Visual Studio 2013, uno dei miei progetti include:Progetto Visual Studio F #: non è possibile avere due cartelle in una struttura di file con lo stesso nome?

<ItemGroup> 
    <Compile Include="Entity\Abstract\Entity.fs" /> 
    <Compile Include="Entity\HumanEntity.fs" /> 
    <Compile Include="State\Abstract\State.fs" /> 
    <Compile Include="State\Abstract\HumanState.fs" /> 
    <Compile Include="State\Human\HumanIdleState.fs" /> 
    <Compile Include="State\Human\HumanAwakenState.fs" /> 
</ItemGroup> 

Visual Studio soffoca su questo, sostenendo che:

The project 'Entity.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 'State\Abstract\State.fs'.

Se cambio la include in questo modo, tutto va bene:

<ItemGroup> 
    <Compile Include="Entity\AbstractEntity\Entity.fs" /> 
    <Compile Include="Entity\HumanEntity.fs" /> 
    <Compile Include="State\AbstractState\State.fs" /> 
    <Compile Include="State\AbstractState\HumanState.fs" /> 
    <Compile Include="State\Human\HumanIdleState.fs" /> 
    <Compile Include="State\Human\HumanAwakenState.fs" /> 
</ItemGroup> 

Si tratta di una svista in VS2013, o sto facendo qualcosa di sbagliato, qui?

risposta

10

Sfortunatamente si tratta di un limite del sistema di progetto F # in Visual Studio. Un'analisi più dettagliata potrebbe essere trovata in this article.

Nel prossimo supporto per l'organizzazione delle cartelle in Visual F# Power Tools, dobbiamo aggiungere la convalida per impedire agli utenti di aggiungere le cartelle con il nome duplicato in un progetto utilizzando le voci di menu (vedi the code e relevant discussion). Certamente non possiamo impedire agli utenti di farlo modificando i file fsproj.

Forse è possibile inviare un suggerimento a fsbugs su microsoft dot com, in modo che possa essere corretto in una prossima versione di Visual F # Tools.

+5

succhia il culo. Grazie. – MiloDC

2

Ecco cosa Attualmente sto usando per aggirare questa limitazione:

Diciamo che dipendono da librerie esterne (come Bootstrap, ecc - F # è sorprendentemente bravo a roba web, anche) che do organizzare i loro file nelle gerarchie di cartelle che hanno nomi di cartelle duplicati.

È possibile conservare quella struttura cartella se si modifica la capitalizzazione delle cartelle che hanno lo stesso nome. Per esempio, questo funziona (e si può estendere questo modello, deve il nome della cartella per consentire combinazioni di capitalizzazione sufficiente)

La seguente struttura di cartelle:

fonts \ bootstrap ... fogli di stile \ bootstrap ... javascript \ bootstrap ...

può essere incluso in un progetto F # in questo modo (il tag contenuti è solo un esempio, può essere None, ecc):

<Content Include="fonts\bootstrap\glyphicons-halflings-regular.eot" /> 
... 
<Content Include="javascripts\Bootstrap\affix.js" /> 
... 
<Content Include="stylesheets\BOotstrap\_alerts.scss" /> 
... 

... e così via.

Il bit rilevante nel campione di cui sopra: b ootstrap vs. B ootstrap vs. BO otstrap.

Tutto funziona dopo. Suppongo che non funzioni bene su file system sensibili alle maiuscole e minuscole, a meno che non si usi anche i nomi delle cartelle.

Problemi correlati