В Visual Studio (2008) есть способ иметь пользовательский зависимый файл в другом пользовательском файле? - PullRequest
13 голосов
/ 08 апреля 2009

Вместо кода * .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>

и он просто показывает файлы вместе друг с другом.

Ответы [ 6 ]

16 голосов
/ 06 июня 2009

Существует VSCommands надстройка, которая позволяет вам настраивать зависимые файлы напрямую из IDE

Ссылка обновлена, предыдущая была http://mokosh.co.uk/vscommands

FYI: Когда VSCommands установлен, просто выберите все файлы, которые вы хотите быть зависимыми, и корневой файл, затем щелкните правой кнопкой мыши -> Group Items ... и VSCommands спросит, какие из файлов вы хотите быть корневыми файл.

11 голосов
/ 08 апреля 2009

Абсолютно - но вам придется редактировать файл проекта вручную. Найдите запись вашего «дочернего» файла и измените ее на несамозакрывающийся элемент и добавьте дочерний элемент, чтобы сказать, от чего он зависит. Вот пример компилируемого файла .cs:

<Compile Include="AssertCount.cs">
  <DependentUpon>MoreEnumerable.cs</DependentUpon>
</Compile>

И вот версия, которую я только что смоделировал для указанных вами файлов - хотя я ожидаю, что Home.spark будет иметь действие, связанное с ним, а не "Нет":

<ItemGroup>
  <Content Include="Home.spark.js">
    <DependentUpon>Home.spark</DependentUpon>
  </Content>
</ItemGroup>
<ItemGroup>
  <None Include="Home.spark" />
</ItemGroup>

Visual Studio отображает его так, как вы ожидаете.

2 голосов
/ 08 апреля 2009

Я не знаю, как вы можете сделать это через сам пользовательский интерфейс Visual Studio, но если вы откроете файл csproj в текстовом редакторе, вы увидите, как они это делают для Global.asax.

Обычно это выглядит примерно так:

<Compile Include="Global.asax" />
<Compile Include="Global.asax.cs">
    <DependentUpon>Global.asax</DependentUpon>
</Compile>
0 голосов
/ 30 декабря 2015

Вы можете вручную отредактировать файл проекта, предложил Джон Скид, или вы также можете взглянуть на Расширение вложения файлов для Visual Studio , которое сделает эту работу за вас.

0 голосов
/ 03 апреля 2012

Если вам нужно добавить код для некоторого файла, есть обходной путь. Например, вы хотите сделать Test.xaml.cs дочерним для Test.xaml . Выполните следующие шаги:

  1. Исключить оба Test.xaml и Test.xaml.cs из проекта, сохранить проект.

  2. Выгрузить проект.

  3. Перезагрузить проект.

  4. Нажмите «Показать скрытые файлы» на панели «Проводник».

  5. Файл Test.xaml.cs будет отображаться как дочерний элемент Test.xaml .

  6. Добавить файлы обратно в проект, сохранить проект.

Вот и все. Теперь Test.xaml.cs зависит от Test.xaml .

0 голосов
/ 28 апреля 2010

Хотя другие решения здесь (редактирование файла проекта) работают для отдельных файлов, мы сделали то же самое, но хотим, чтобы оно работало автоматически для всех файлов * .conv и * .conv.js, а не для редактирования файл проекта для каждого.

Когда мы добавляем новый файл .conv в наше приложение, если у нас есть файл * .conv.js, он автоматически встраивается в него, как и следовало ожидать с .aspx и * .aspx.cs.

Я не могу найти исходное учебное пособие, которое я использовал для его настройки (оно включает в себя взлом реестра), но вот то, что я нашел в поиске Google только сейчас, описывает то же самое:

http://blog.dotnetwise.com/2009/09/visual-studio-2008-custom-nested-files.html

...