由于NuGet打包的巨大优势,我将C#库的csproj
文件转换为新的Visual Studio 2017格式,如下所述:
Old csproj to new csproj: Visual Studio 2017 upgrade guide。
现在,我的WPF用户控件的所有xaml.cs
和xaml
文件都被并排显示,而不是以结构显示(xaml.cs
“内部” xaml
)。另外,我无法通过上下文菜单命令“视图代码”或“视图设计器”在它们之间切换。
我发现可以通过在csproj
文件中添加适当的条目来解决结构化显示问题:
<Compile Include="SomeView.xaml.cs">
<DependentUpon>SomeView.xaml</DependentUpon>
</Compile>
保存csproj
文件后,需要一两秒钟,然后在项目资源管理器视图中直观地显示了这两个项目。
不过,我仍然无法通过上下文菜单命令在它们之间切换。
此外,在编译时出现错误NETSDK1022
,告诉您那些编译元素现在已加倍(新的项目格式会自动添加所有合适的文件)。可以通过将EnableDefaultCompileItems
设置为false
来禁用此机制。
对于新的VS2017项目格式,是否有更好的方法“绑定” xaml及其代码隐藏文件?
(也许这是为什么尚未为窗口项目发布新项目格式的问题之一...)
答案 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博客文章。