2009-04-07 4 views
13

Вместо кода * .cs сзади или рядом с ним я хотел бы иметь файл * .js. Я разрабатываю приложение MVC, у меня нет необходимости в коде, потому что у меня есть контроллеры, но в некоторых случаях было бы неплохо иметь код JavaScript рядом или каким-то образом связать файл со страницей, на которой он используется. Полагаю, я мог бы просто назвать их аналогичным образом, но я хочу показать ассоциацию, если это возможно, поэтому нет никаких сомнений в том, для чего нужен файл.В Visual Studio (2008) есть ли способ иметь пользовательский зависимый файл в другом пользовательском файле?

Обычно то, что я говорю о том, в Visual Studio теперь под вашим Global.asax файл, который вы будете иметь знак плюс слева:

+ Global.asax 

После того, как вы расширить его, вы получите

- Global.asax 
    Global.asax.cs 

Я хотел бы то же самое произойдет:

+ Home.spark 

- Home.spark 
    Home.spark.js 

UPDA ted:

У моего существующего файла 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> 

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

ответ

11

Абсолютно - но вам нужно будет отредактировать файл проекта вручную. Найдите запись своего «дочернего» файла и измените его как неавтоматический элемент и добавьте дочерний элемент, чтобы сказать, на что он зависит. Вот пример для файла .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 отображает его так, как вы ожидали.

+0

На самом деле, сейчас искра просто связана с None: <Нет Include = "Просмотров \ User \ Profile.spark" /> Я дам ему шанс, спасибо за ответ! – rball

+0

Пробовал: \t Views \ User \ Profile.spark <Нет Include =» Просмотров \ User \ Profile.spark»/> не работает :( – rball

+1

@rball -. Profile.spark предполагается, что они находятся в той же папке –

2

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

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

<Compile Include="Global.asax" /> 
<Compile Include="Global.asax.cs"> 
    <DependentUpon>Global.asax</DependentUpon> 
</Compile> 
+0

Да, я это видел. Я попытался смоделировать мое, но это не сработало. urrently выглядит следующим образом: – rball

+0

Views \ User \ Profile.spark <Нет Include =» Просмотры \ User \ Profile.spark "/> rball

16

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

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

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

+0

Очень круто, спасибо за добавление. – rball

+0

обновленная ссылка на VSCommands: http://mokosh.co.uk/vscommands –

+1

Удивительно. Это проще, чем редактировать файл проекта вручную - особенно если вы необходимо сделать это для нескольких файлов. FYI: Когда VSCommands установлен, просто выберите все файлы, которые вы хотите быть зависимыми, и корневой файл, затем щелкните правой кнопкой мыши -> Элементы группы ... и VSCommands спросят, какой из файлов вы хотел бы быть корневым файлом. Работает как шарм! – javajavajavajavajava

0

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

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

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

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

0

Если вам нужно добавить код для некоторого файла, существует обходное решение. Например, вы хотите сделать 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

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