Ответ 1
Это просто, попробуйте добавить в существующие объекты проекта и выбрать файлы XAML (не .cs и т.д.) в списке форматов. В VS2010 это помогает.
У меня был VB спроектирован и преобразован в С# с использованием инструментов онлайн-преобразования. Теперь проблема заключается в том, что xaml
и xaml.cs
файл не соединяются друг с другом, то есть они не распознают свои зависимости (красная область на рис.). На самом деле это должно выглядеть как Window1 Files (Зеленая область на изображении.) Как я могу это достичь.
Я пытаюсь использовать WPF, поэтому может быть вопрос непрофессионала.
Это просто, попробуйте добавить в существующие объекты проекта и выбрать файлы XAML (не .cs и т.д.) в списке форматов. В VS2010 это помогает.
Если вы не можете заставить IDE сделать это (сообщение Papa John), вы можете сделать это, отредактировав файл проекта.
Эта информация находится в файле .csproj(который является XML файлом - вы можете открыть его в текстовом редакторе или щелкнуть правой кнопкой мыши по нему, выбрав "выгрузить", а затем открыть его - выбрать перезагрузку снова загрузите его как проект).
Вот информация, которую нужно искать, вам нужно добавить тег "DependentUpon".
<Compile Include="TheFile.xaml.cs">
<DependentUpon>TheFile.xaml</DependentUpon>
</Compile>
Самый простой способ!!!
Я сталкивался с тем же. Я получил выход. Вот как получить.xaml.cs, вложенный в.xaml в обозревателе решений:
Использование решения 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
Основываясь на комментариях Кайла Уайта на официальном Отчет об ошибке 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 следует использовать для генерации кода из файла разметки.
Использование решения Xamarin Shared Code:
1) Перейдите к папке проекта после разгрузки совместно используемого проекта
2) Найдите файл projitems и измените его, добавив тег DependentUpon, как описано в других ответах выше.
3) Сохраните файл
4) Вернитесь к визуальной студии, и вы получите диалоговое окно, позволяющее перезагрузить все или просто открыть проект еще раз.
Если вы получили расширение Nested File VS Extension, вы можете сделать это, щелкнув правой кнопкой мыши файлы с одинаковыми именами и выбрав "вкладывать автоматически", или вы можете вложить вручную.
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileNesting
В общем проекте вместо файла.csproj есть файл.shproj, а элементы и там не существуют. Однако я обнаружил, что есть также файл.projitems, и добавление в него раздела, как описано выше, привело к связыванию файлов.xaml и.cs.
Еще более простое и быстрое решение для проектов Xamarin Forms, не нужно прикасаться к файлу csproj, очень быстрое исправление.
Убедитесь, что Show All Files
решений выбран параметр Show All Files
- он может быть включен по умолчанию.
Exclude from Project
Include in Project
> Include in Project
Теперь все они должны быть правильно вложены, и все изменения, необходимые для файла.csproj, будут выполнены.
После этого может возникнуть ошибка InitializeComponent() does not exist in the current context)
. Если это так, простое исправление..
Build Action
со Page
на Embedded Resource
Я смог просто перезапустить Visual Studio для Mac 2019 v16.2, и он снова подключил мой .xaml & Файлы .cs, которые должны были быть подключены.
Если это не сработало, решение Hitsa сработало и для меня.