В Visual Studio (2008) есть ли способ иметь настраиваемый зависимый файл в другом пользовательском файле?
Вместо кода *.cs сзади или рядом с ним я хотел бы иметь файл *.js. Я разрабатываю приложение MVC, и мне не нужен код, потому что у меня есть контроллеры, но в некоторых случаях было бы неплохо иметь код JavaScript рядом или каким-то образом связать файл со страницей, на которой он используется. Полагаю, я мог бы просто назвать их аналогичным образом, но я хочу показать ассоциацию, если это возможно, поэтому нет никаких вопросов о том, для чего предназначен файл.
Как правило, в Visual Studio теперь под вашим файлом Global.asax у вас будет знак плюса слева:
+ Global.asax
После его расширения вы получите
- Global.asax
Global.asax.cs
Мне бы хотелось, чтобы это случилось:
+ Home.spark
- Home.spark
Home.spark.js
Обновлено:
У моего существующего файла csproj есть путь к фактическому файлу, не уверен, что он его закручивает. У меня есть:
<ItemGroup>
<Content Include="Views\User\Profile.spark.js">
<DependentUpon>Views\User\Profile.spark</DependentUpon>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="Views\User\Profile.spark" />
</ItemGroup>
и он просто показывает файлы, кроме друг друга.
Ответы
Ответ 1
Абсолютно - но вам нужно будет отредактировать файл проекта вручную. Найдите свою запись "child" и измените ее как элемент, не являющийся самозакрывающимся, и добавьте дочерний элемент, чтобы сказать, от чего это зависит. Вот пример скомпилированного файла .cs:
<Compile Include="AssertCount.cs">
<DependentUpon>MoreEnumerable.cs</DependentUpon>
</Compile>
И вот версия, которую я только что высмеял для файлов, которые вы указали, хотя я ожидаю, что Home.spark
будет иметь связанное с ним действие, а не "None":
<ItemGroup>
<Content Include="Home.spark.js">
<DependentUpon>Home.spark</DependentUpon>
</Content>
</ItemGroup>
<ItemGroup>
<None Include="Home.spark" />
</ItemGroup>
Visual Studio отображает его так же, как вы ожидали.
Ответ 2
Существует надстройка VSCommands, которая позволяет вам настраивать зависимые файлы непосредственно из IDE
Ссылка обновлена, предыдущая была http://mokosh.co.uk/vscommands
FYI: Когда VSCommands установлен, просто выберите все файлы, которые вы хотите быть зависимыми, и корневой файл, затем щелкните правой кнопкой мыши → Элементы группы... и VSCommands спросят, какой из файлов вы хотели бы быть корневым файл.
Ответ 3
Я не знаю, как вы можете это сделать с помощью самого интерфейса Visual Studio, но если вы откроете файл csproj в текстовом редакторе, вы увидите, как они это делают для Global.asax.
Обычно это выглядит примерно так:
<Compile Include="Global.asax" />
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
Ответ 4
В то время как другие решения здесь (редактирование файла проекта) работают для отдельных файлов, мы сделали то же самое, но хотим, чтобы он работал автоматически для всех файлов *.conv и *.conv.js вместо необходимости редактировать файл проекта для каждого из них.
Когда мы добавляем новый .conv файл в наше приложение, если у нас есть файл *.conv.js, он автоматически гнездится под ним, как вы ожидали бы с .aspx и *.aspx.cs.
Я не могу найти оригинальное учебное пособие, которое я использовал для его настройки (это связано с взломом реестра), но вот тот, который я нашел из поиска Google только сейчас, что описывает одно и то же:
http://blog.dotnetwise.com/2009/09/visual-studio-2008-custom-nested-files.html
Ответ 5
Если вам нужно добавить код для некоторого файла, есть обходное решение. Например, вы хотите сделать Test.xaml.cs дочерний элемент Test.xaml. Выполните следующие шаги:
-
Исключить из проекта проект Test.xaml и Test.xaml.cs, сохранить проект.
-
Выгрузить проект.
-
Обновить проект.
-
Нажмите "Показать скрытые файлы" в панели "Проводник".
-
Файл Test.xaml.cs будет отображаться как дочерний элемент Test.xaml.
-
Добавить файлы обратно в проект, сохранить проект.
Что это. Теперь Test.xaml.cs зависит от Test.xaml.
Ответ 6
Вы можете вручную редактировать файл проекта, предлагаемый Джоном Скидом, или вы также можете посмотреть в Расширение файла Nesting для Visual Studio, который выполнит эту работу для вас.