Ich hatte ein VB projiziert und es mit Online-Konvertierungswerkzeugen in C # konvertiert. Nun besteht das Problem darin, dass xaml
und xaml.cs
nicht miteinander verbunden sind, dh sie erkennen ihre Abhängigkeiten nicht (roter Bereich in Abb.). Eigentlich sollte es wie Window1 Files (grüner Bereich im Bild) aussehen. Wie kann ich das erreichen?.
Ich versuche mich an WPF, also ist es eine Art Laie.
Dies ist einfach. Versuchen Sie, vorhandene Elemente in ein Projekt einzufügen und wählen Sie die XAML-Dateien (nicht .cs usw.) in der Liste der Formate aus. In VS2010 hilft das.
Wenn Sie die IDE nicht dazu bringen können (Papa Johns Post), können Sie dies tun, indem Sie die Projektdatei bearbeiten.
Diese Informationen befinden sich in der .csproj-Datei (einer XML-Datei). Sie können sie in einem Texteditor öffnen oder durch Rechtsklick darauf "Entladen" auswählen und dann öffnen. Wählen Sie "Neu laden", um sie zu laden als Projekt wieder).
Hier sind die Informationen, nach denen Sie suchen müssen. Sie müssen dann den Tag "DependentUpon" hinzufügen.
<Compile Include="TheFile.xaml.cs">
<DependentUpon>TheFile.xaml</DependentUpon>
</Compile>
Einfachster Weg!!!
.__ Ich bin das selbe gestoßen. Ich bin rausgekommen. So bekommen Sie die .xaml.cs im Solution Explorer unter der .xaml verschachtelt:
Verwenden einer Xamarin PCL-Lösung:
1) Gehen Sie in Ihren PCL-Ordner und öffnen Sie Ihre MySolution.csproj -Datei
2) Es sollten mehrere Gruppen von <ItemGroup>
-Tags vorhanden sein. Einer von ihnen deklariert <EmbeddedResource>
-Tags und ein anderer enthält <Compile> <DependentUpon></DependentUpon></Compile>
-Gruppen von Tags.
3) Für MyPage.xaml und MyPage.xaml.cs - Dateien, die verlinkt werden sollen, müssen Sie eine Gruppe von xmls haben, die Ihre xaml-Seite deklariert.
<EmbeddedResource Include="MyPage.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
<LogicalName>MyPage.xaml</LogicalName>
</EmbeddedResource>
<Compile Include="MyPage.xaml.cs">
<DependentUpon>MyPage.xaml</DependentUpon>
</Compile>
Beachten Sie, dass Sie, wenn sich Ihre Seite in einem Ordner befindet, Folgendes angeben sollten:
<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>
Beachten Sie, dass dies mit OSX und Windows funktioniert
Basierend auf Kyle Whites Kommentar zum offiziellen Xamarin-Fehlerbericht 55591: .xaml-Dateien in der .NETStandard-Bibliothek werden zweimal im Lösungs-Explorer angezeigt , habe ich im verknüpften .NET) eine einfache Lösung für dieses Problem gefunden Standardbeispielprojekt von Oren Novotny
Fügen Sie in Ihrer Datei . Csproj Folgendes hinzu: <ItemGroup>:
<ItemGroup>
<Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" />
<EmbeddedResource Include="**\*.xaml" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" LogicalName="%(Filename)%(Extension)" />
</ItemGroup>
Danach werden alle xaml
Dateien in der Projektstruktur automatisch im Projektmappen-Explorer angezeigt - selbst wenn Sie jemals neue xaml
Dateien hinzufügen.
Wie funktioniert diese Magie?
Das Compile Element innerhalb von ItemGroup verwendet Platzhalter, um durch alle Verzeichnisse zu iterieren und nach .xaml.cs
Dateien und zu suchen Markieren Sie sie als abhängig von den xaml
-Dateien mit demselben Namen. Beachten Sie, dass dies nur funktioniert, weil die %(Filename)
-Element-Metadaten, die für das DependentUpon -Element verwendet werden, die Dateierweiterung ganz links enthalten, die dem Namen der xaml
-Datei von entspricht Konvention. Das Element EmbeddedResource enthält alle xaml
-Dateien für das Projekt, sodass sie im Projektmappen-Explorer angezeigt werden, während sie als - markiert werden. Designer Dateien und die Angabe, dass das UpdateDesignTimeXaml
-Ziel, das im NuGet-Paket von Xamarin.Forms definiert ist, zum Generieren von Code aus der Markup-Datei verwendet werden soll.
Verwenden der Xamarin Shared Code-Lösung:
1) Gehen Sie zu Ihrem Projektordner, nachdem Sie das freigegebene Projekt entladen haben
2) Suchen Sie die Projektdatei und bearbeiten Sie das Hinzufügen des DependentUpon-Tags wie in den anderen Antworten beschrieben.
3) Speichern Sie die Datei
4) Gehen Sie zurück zu Visual Studio und Sie sollten einen Dialog erhalten, in dem Sie alle neu laden oder das Projekt einfach wieder öffnen können.
Wenn Sie die geschachtelte Datei-VS-Erweiterung erhalten, können Sie dies tun, indem Sie mit der rechten Maustaste auf gleichnamige Dateien klicken und "automatisch verschachteln" wählen.
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileNesting
In einem freigegebenen Projekt gibt es eine .shproj-Datei anstelle einer .csproj-Datei, und die Elemente und sind dort nicht vorhanden. Ich fand jedoch auch, dass es eine .projitems-Datei gibt und das Hinzufügen eines Abschnitts wie oben beschrieben dazu führte, dass die .xaml- und .cs-Dateien verknüpft wurden
Eine noch einfachere und schnellere Lösung für Xamarin Forms-Projekte, keine Notwendigkeit, die csproj-Datei überhaupt zu berühren, sehr schnelle Lösung.
Stellen Sie sicher, dass Sie Show All Files
für den Lösungs-Explorer ausgewählt haben. Möglicherweise ist er standardmäßig aktiviert.
Exclude from Project
Include in Project
Sie sollten nun alle korrekt verschachtelt sein und alle erforderlichen Änderungen an der .csproj-Datei werden vorgenommen.
Nach diesem Fehler kann es zu einem InitializeComponent() does not exist in the current context)
-Fehler kommen. Wenn dies der Fall ist, lautet der einfache Fix ..
Build Action
von Page
in Embedded Resource
.