我投影了一个VB并使用在线转换工具将其转换为C#。现在问题是xaml
和xaml.cs
文件没有相互连接,即他们不能识别他们的依赖关系(图中的红色区域)。实际上它应该看起来像Window1文件(图像中的绿色区域。)我怎样才能实现这一点。
我正在尝试WPF,所以可能是一个外行问题。
答案 0 :(得分:71)
这很简单,尝试添加项目现有项目并选择格式列表中的XAML(而不是.cs等)文件。在VS2010中有帮助。
答案 1 :(得分:44)
如果你不能让IDE去做(Papa John的帖子),那么你可以通过编辑项目文件来完成。
该信息位于.csproj文件中(这是一个XML文件 - 您可以在文本编辑器中打开它,或者右键单击它,选择“卸载”,然后打开它 - 选择重新加载到再次将其作为项目加载。)
以下是要查找的信息,您需要添加“DependentUpon”标记。
<Compile Include="TheFile.xaml.cs">
<DependentUpon>TheFile.xaml</DependentUpon>
</Compile>
答案 2 :(得分:15)
最简单的方式!!!
我遇到了同样的事情。我找到了出路。以下是如何在解决方案资源管理器中将.xaml.cs嵌套在.xaml下:
答案 3 :(得分:5)
根据Kyle White对官方Xamarin bug report 55591: .xaml files in .NETStandard library appear twice in solution explorer的评论,我在链接.NET Standard sample project by Oren Novotny
中找到了解决此问题的简单方法在 .csproj 文件中,添加以下&lt; ItemGroup&gt; :
<ItemGroup>
<Compile Update="**\*.xaml.cs" DependentUpon="%(Filename)" />
<EmbeddedResource Include="**\*.xaml" SubType="Designer" Generator="MSBuild:UpdateDesignTimeXaml" LogicalName="%(Filename)%(Extension)" />
</ItemGroup>
之后,项目结构中的所有xaml
文件将自动显示在“解决方案资源管理器”窗口中 - 即使您已经添加了新的xaml
文件。
这个神奇的工作原理如何?
ItemGroup 中的编译元素正在使用通配符迭代所有目录,搜索.xaml.cs
个文件并将其标记为依赖于{{1同名的文件。请注意,这只是因为用于 DependentUpon 元素的xaml
项元数据包含最左侧的文件扩展名,它按照惯例与%(Filename)
文件的名称匹配。
EmbeddedResource 元素将包含项目的所有xaml
个文件,以便它们在解决方案资源管理器窗口中可见,同时将它们标记为 Designer 文件,并声明该文件应使用Xamarin.Forms NuGet包中定义的xaml
目标从标记文件生成代码。
答案 4 :(得分:2)
使用Xamarin共享代码解决方案:
1)卸载共享项目后转到项目文件夹
2)找到projitems文件并编辑添加DependentUpon标签,如上面其他答案所述。
3)保存文件
4)回到visual studio,你应该得到一个对话框,允许你重新加载所有内容或者再次打开项目。
答案 5 :(得分:1)
如果您获得了嵌套文件VS扩展,您可以通过右键单击类似命名的文件并选择“自动嵌套”或手动嵌套来完成此操作。
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.FileNesting
答案 6 :(得分:1)
在共享项目中,存在.shproj文件而不是.csproj文件,并且和项目不存在。 但是我发现还有一个.projitems文件,并且如上所述在其中添加了一部分,导致.xaml和.cs文件被链接
答案 7 :(得分:0)
Xamarin Forms项目的更简单,更快速的解决方案,根本不需要触摸csproj文件,非常快速的修复。
确保为解决方案资源管理器选择了Show All Files
- 默认情况下它可能已启用。
Exclude from Project
Include in Project
现在它们都应该正确嵌套,并且.csproj文件所需的所有更改都将完成。
此后您可能会遇到InitializeComponent() does not exist in the current context)
错误。
如果是这样,那么简单的修复就是......
Build Action
从Page
更改为Embedded Resource
答案 8 :(得分:0)
通常-关闭Visual Studio,删除解决方案根目录中的vs文件夹,然后重新打开Visual Studio(2019),对我来说才有用。
答案 9 :(得分:0)
对于 VS 2019,您只需编辑 .csproj 文件并消除对 .xaml.cs 文件的所有引用 es:
<ItemGroup>
<Folder Include="Models\" />
<Folder Include="Services\" />
<Folder Include="ViewModels\" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Views\MyPage.xaml">
<LogicalName>MyPage.xaml</LogicalName>
</EmbeddedResource>
</ItemGroup>
答案 10 :(得分:-1)
我能够重新启动Visual Studio for Mac 2019 v16.2,它重新连接了应该连接的.xaml和.cs文件。
如果这不起作用,那么Hitsa的解决方案在另外的情况下也对我有用。