是否可以将xaml.cs连接到VS2017 csproj格式的相应xaml?

时间:2019-01-16 15:53:10

标签: c# wpf xaml visual-studio-2017 csproj

由于NuGet打包的巨大优势,我将C#库的csproj文件转换为新的Visual Studio 2017格式,如下所述: Old csproj to new csproj: Visual Studio 2017 upgrade guide

现在,我的WPF用户控件的所有xaml.csxaml文件都被并排显示,而不是以结构显示(xaml.cs“内部” xaml)。另外,我无法通过上下文菜单命令“视图代码”或“视图设计器”在它们之间切换。

我发现可以通过在csproj文件中添加适当的条目来解决结构化显示问题:

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

保存csproj文件后,需要一两秒钟,然后在项目资源管理器视图中直观地显示了这两个项目。 不过,我仍然无法通过上下文菜单命令在它们之间切换。

此外,在编译时出现错误NETSDK1022,告诉您那些编译元素现在已加倍(新的项目格式会自动添加所有合适的文件)。可以通过将EnableDefaultCompileItems设置为false来禁用此机制。

对于新的VS2017项目格式,是否有更好的方法“绑定” xaml及其代码隐藏文件?

(也许这是为什么尚未为窗口项目发布新项目格式的问题之一...)

2 个答案:

答案 0 :(得分:1)

Include替换为Update

从您的角度出发

  

新的项目格式会自动添加所有合适的文件

因为这一点,通常更喜欢使用Update而不是Include。就是这个。

假定默认情况下包括所有文件,那么当您使用单词“ Include”时,您将添加一个已经存在的文件。但是,如果您使用“更新”一词,则会更新已经包含的文件。

答案 1 :(得分:0)

我不认为针对.NET Framework的WPF项目正式支持切换到新项目格式。但是,当您以.NET Core 3为目标时,Visual Studio 2019将支持它。

有一个新的Microsoft.NET.Sdk.WindowsDesktop SDK,它使用preview中提供的以下最小.csproj文件来构建包括XAML文件在内的.NET Core WPF项目:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
    <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <UseWPF>true</UseWPF>
    </PropertyGroup>
</Project>

有关更多信息,请参阅this博客文章。