Как сделать ссылку на папку в другом месте?
В файлах проекта 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: В общем, это служит для включения файлов в несколько проектов. В моем конкретном случае я работаю над проектом, который должен ссылаться на библиотеку классов в том же решении, но он также должен включать весь исходный код (включая файл проекта и т. Д.) Этой библиотеки классов в качестве встроенного ресурса.