Подтвердить что ты не робот

Как подключить файлы xaml и xaml.cs

У меня был VB спроектирован и преобразован в С# с использованием инструментов онлайн-преобразования. Теперь проблема заключается в том, что xaml и xaml.cs файл не соединяются друг с другом, то есть они не распознают свои зависимости (красная область на рис.). На самом деле это должно выглядеть как Window1 Files (Зеленая область на изображении.) Как я могу это достичь.

Solution Explorer

Я пытаюсь использовать WPF, поэтому может быть вопрос непрофессионала.

4b9b3361

Ответ 1

Это просто, попробуйте добавить в существующие объекты проекта и выбрать файлы XAML (не .cs и т.д.) в списке форматов. В VS2010 это помогает.

Ответ 2

Если вы не можете заставить IDE сделать это (сообщение Papa John), вы можете сделать это, отредактировав файл проекта.

Эта информация находится в файле .csproj(который является XML файлом - вы можете открыть его в текстовом редакторе или щелкнуть правой кнопкой мыши по нему, выбрав "выгрузить", а затем открыть его - выбрать перезагрузку снова загрузите его как проект).

Вот информация, которую нужно искать, вам нужно добавить тег "DependentUpon".

<Compile Include="TheFile.xaml.cs">
  <DependentUpon>TheFile.xaml</DependentUpon>
</Compile>

Ответ 3

Самый простой способ!!!

Я сталкивался с тем же. Я получил выход. Вот как получить.xaml.cs, вложенный в.xaml в обозревателе решений:

  1. В проводнике Windows (за пределами Visual Studio) откройте папку, в которой находятся необходимые файлы.
  2. Выберите оба файла (.xaml и.xaml.cs) вместе.
  3. Перетащите его на имя своего проекта в обозревателе решений.
  4. Это сделано! :)

Ответ 4

Использование решения Xamarin PCL:

1) Перейдите в папку PCL и откройте файл MySolution.csproj

2) Должно быть несколько групп тегов <ItemGroup>. Один из них объявляет теги <EmbeddedResource>, а другой будет содержать теги <Compile> <DependentUpon></DependentUpon></Compile>.

3) Для файлов MyPage.xaml и MyPage.xaml.cs, у вас должна быть группа xmls, объявляющая вашу страницу xaml.

<EmbeddedResource Include="MyPage.xaml">
      <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
      <LogicalName>MyPage.xaml</LogicalName>
</EmbeddedResource>
<Compile Include="MyPage.xaml.cs">
      <DependentUpon>MyPage.xaml</DependentUpon>
</Compile>

Обратите внимание, что если ваша страница находится в папке, вы должны указать ее так:

<Compile Include="Views\MyPage.xaml.cs">
      <DependentUpon>MyPage.xaml</DependentUpon>
</Compile>
<EmbeddedResource Include="Views\MyPage.xaml">
      <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
      <LogicalName>MyPage.xaml</LogicalName>
</EmbeddedResource>

Обратите внимание, что это работает с OSX и Windows

Ответ 5

Основываясь на комментариях Кайла Уайта на официальном Отчет об ошибке Xamarin 55591:.xaml в библиотеке .NETStandard дважды появляются в обозревателе решений, я нашел простое решение этой проблемы в рамках связанного . Стандартный примерный проект Oren Novotny

В файле .csproj добавьте следующую <ItemGroup> :

<ItemGroup>
  <Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" />
  <EmbeddedResource Include="**\*.xaml" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" LogicalName="%(Filename)%(Extension)" />
</ItemGroup>

Затем все файлы xaml в структуре проекта будут отображаться в окне обозревателя решений автоматически - даже если вы когда-нибудь добавите новые файлы xaml.

Как работает эта магия?

Элемент Компилировать в элементе ItemGroup использует подстановочные знаки для итерации по всем каталогам, поиска файлов .xaml.cs и их маркировки в зависимости от файлов xaml с тем же именем. Обратите внимание, что это работает только потому, что метаданные элемента %(Filename), используемые для элемента DependentUpon, содержат самое большое расширение файла, которое соответствует имени файла xaml по соглашению. Элемент EmbeddedResource будет включать в проект все файлы xaml, чтобы они были видны в окне обозревателя решений, отмечая их как файлы конструктора и объявляя, что цель UpdateDesignTimeXaml определена в Xamarin.Forms Пакет NuGet следует использовать для генерации кода из файла разметки.

Ответ 6

Использование решения Xamarin Shared Code:

1) Перейдите к папке проекта после разгрузки совместно используемого проекта

2) Найдите файл projitems и измените его, добавив тег DependentUpon, как описано в других ответах выше.

3) Сохраните файл

4) Вернитесь к визуальной студии, и вы получите диалоговое окно, позволяющее перезагрузить все или просто открыть проект еще раз.

Ответ 7

Если вы получили расширение Nested File VS Extension, вы можете сделать это, щелкнув правой кнопкой мыши файлы с одинаковыми именами и выбрав "вкладывать автоматически", или вы можете вложить вручную.

https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileNesting

Ответ 8

В общем проекте вместо файла.csproj есть файл.shproj, а элементы и там не существуют. Однако я обнаружил, что есть также файл.projitems, и добавление в него раздела, как описано выше, привело к связыванию файлов.xaml и.cs.

Ответ 9

Еще более простое и быстрое решение для проектов Xamarin Forms, не нужно прикасаться к файлу csproj, очень быстрое исправление.

Убедитесь, что Show All Files решений выбран параметр Show All Files - он может быть включен по умолчанию.

  1. Выберите все затронутые файлы
  2. Щелкните правой кнопкой мыши> Exclude from Project
  3. Выберите те же файлы снова (должны быть исчезнут)
  4. Щелкните правой кнопкой Include in Project > Include in Project

Теперь все они должны быть правильно вложены, и все изменения, необходимые для файла.csproj, будут выполнены.

После этого может возникнуть ошибка InitializeComponent() does not exist in the current context). Если это так, простое исправление..

  • Выделите все затронутые элементы и измените Build Action со Page на Embedded Resource

Ответ 10

Я смог просто перезапустить Visual Studio для Mac 2019 v16.2, и он снова подключил мой .xaml & Файлы .cs, которые должны были быть подключены.

Если это не сработало, решение Hitsa сработало и для меня.