Как сделать ссылку на папку в другом месте?

В файлах проекта C#, написанных Visual Studio или SharpDevelop, файлы, которые не находятся в иерархии папок проекта, могут быть включены в <Link> элемент. 1

Моя структура каталогов выглядит так:

[SolutionDirectory]
 |- [MyProject]
 |   |- TestProj.csproj
 |- [File]
 |   |- somefile.txt
 |- TestProj.sln

Следовательно, в TestProj.csproj я могу добавить следующее:

<ItemGroup>
    <EmbeddedResource Include="..\File\somefile.txt">
        <LogicalName>MyResource</LogicalName>
        <Link>somefile.txt</Link>
    </EmbeddedResource>
</ItemGroup>

Это работает безупречно, и somefile.txt встроен в качестве ресурса. Дерево проекта показано в SharpDevelop 4.4 следующим образом:

проект со связанным файлом

Однако, чтобы сделать все более аккуратным, я хотел бы организовать файлы, такие как somefile.txt, в иерархии папок в TestProj.csproj. Я пробовал следующее:

Просто адаптируя <Link> :

<ItemGroup>
    <EmbeddedResource Include="..\File\somefile.txt">
        <LogicalName>MyResource</LogicalName>
        <Link>File\somefile.txt</Link>
    </EmbeddedResource>
</ItemGroup>

Объявление папки с нужным именем:

<ItemGroup>
    <EmbeddedResource Include="..\File\somefile.txt">
        <LogicalName>MyResource</LogicalName>
        <Link>File\somefile.txt</Link>
    </EmbeddedResource>
    <Folder Include="File" />
</ItemGroup>

Объявление фактической папки в качестве ссылки:

<ItemGroup>
    <EmbeddedResource Include="..\File\somefile.txt">
        <LogicalName>MyResource</LogicalName>
        <Link>File\somefile.txt</Link>
    </EmbeddedResource>
    <Folder Include="..\File">
        <Link>File</Link>
    </Folder>
</ItemGroup>

Все это дает один и тот же результат: структура папок в проекте отображается по желанию, однако папка File помечена желтым восклицательным знаком, означающим, что что-то не совсем в порядке:

проект со связанным файлом в папке; в папке отображается символ предупреждения

Единственный способ избавиться от этого предупреждающего символа - создать дополнительную папку " Файл " в каталоге проекта:

[SolutionDirectory]
 |- [MyProject]
 |   |- [File]
 |   |- TestProj.csproj
 |- [File]
 |   |- somefile.txt
 |- TestProj.sln

Как видно здесь, эта дополнительная папка File останется пустой, а пустые каталоги возможны только с обходными путями для систем контроля версий, таких как Git. (Возможно, такое же ограничение применяется к некоторым форматам архивов.)

Поэтому я все еще пытаюсь найти лучшее решение: как я могу ссылаться на файлы вне структуры папок моего проекта и сортировать их в иерархию папок в моем проекте, в противном случае пустую?

К сожалению, в справочнике MSBuild Schema в MSDN даже не упоминается <Folder> элемент, поэтому я не смог ничего узнать о проблеме через документы.

1: В общем, это служит для включения файлов в несколько проектов. В моем конкретном случае я работаю над проектом, который должен ссылаться на библиотеку классов в том же решении, но он также должен включать весь исходный код (включая файл проекта и т. Д.) Этой библиотеки классов в качестве встроенного ресурса.

0 ответов

Другие вопросы по тегам