Attached is a simple repro solution.
WpfCps.zip
Issue 1: XAML files are treated as None
, when they should be treated as Page
with Generator=MSBuild:Compile
and SubType=Designer
metadata.
Issue 2: Page
items are not visible in the Solution Explorer
Issue 3: xaml.cs files are not properly nested under the xaml file
Issue 4: Compilation fails with: 1>C:\windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.WinFx.targets(419,45): error MSB4057: The target "CoreCompile" does not exist in the project.
FYI. @srivatsn, @jinujoseph, @nguerrera
This completely blocks the porting of WPF based applications to CPS (I imagine it would also block UWP and anything else that uses XAML).
Yes WPF and any other desktop projects are not supported yet. Currently only .NET Core projects are supported.
This issue was moved to dotnet/roslyn-project-system#1467
It seems like this issue is more about whether you can build a WPF project successfully rather than whether the IDE supports it.
Yes. I can manually override things (as I did in the sample) so that the UI designer in VS and everything else works.
I would think that, of the four issues I listed, two of them are applicable to the SDK repository (as they impact command line builds) and two to the Project System repository (they really only impact the IDE).
SDK
Project System:
here are some workarounds for now
issues 1 and 2:
<Page Include="**\*.xaml" SubType="Designer" Generator="MSBuild:Compile" />
issue 3:
<Compile Update="**\*.xaml.cs" SubType="Code" DependentUpon="%(Filename)" />
issue 4:
<LanguageTargets>$(MSBuildToolsPath)\Microsoft.CSharp.targets</LanguageTargets>
more complete version of the workarounds i use these days - import this at the end of a csproj
<Project>
<!-- https://github.com/dotnet/sdk/issues/810 - the temporary project has the wrong file extension -->
<PropertyGroup>
<LanguageTargets>$(MSBuildToolsPath)\Microsoft.CSharp.targets</LanguageTargets>
<StartWorkingDirectory Condition="'$(OutputType)' == 'WinExe'">bin/$(Configuration)/$(TargetFramework)</StartWorkingDirectory>
</PropertyGroup>
<!-- Page items aren't included by the SDK -->
<ItemGroup>
<Page Include="**\*.xaml" Exclude="@(ApplicationDefinition)" SubType="Designer" Generator="MSBuild:Compile" />
<Compile Update="**\*.xaml.cs" SubType="Code" DependentUpon="%(Filename)" />
<UpToDateCheckInput Include="**\*.xaml" />
</ItemGroup>
<!-- https://github.com/dotnet/project-system/issues/2488 - .g.cs files don't get built -->
<Target Name="WorkaroundForXAMLIntellisenseBuildIssue" AfterTargets="_CheckCompileDesignTimePrerequisite">
<PropertyGroup>
<BuildingProject>false</BuildingProject>
</PropertyGroup>
</Target>
</Project>
Most helpful comment
more complete version of the workarounds i use these days - import this at the end of a csproj