В 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, который выполнит эту работу для вас.