是否可以对UWP项目使用新的SDK样式的.csproj文件?

时间:2018-09-28 13:57:11

标签: c# .net uwp .net-core

是否有人为使用新的SDK样式.csproj格式的UWP项目成功创建了.csproj文件?我从this question中汲取了有关WPF的灵感,这让我90%地了解了WPF。

此后,我开始使用MSBuild.Sdk.Extras package,它使我可以将uap10.0作为<TargetFramework>进行访问,经过一些调整之后,我得到了它的实际编译结果,如下所示.csproj

<Project Sdk="MSBuild.Sdk.Extras">
  <PropertyGroup>    
    <!--UWP-specific properties-->        
    <TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.17134.0</TargetPlatformVersion>
    <TargetPlatformMinVersion>10.0.17134.0</TargetPlatformMinVersion>
    <TargetFrameworks>uap10.0</TargetFrameworks>
    <OutputType>AppContainerExe</OutputType>    
    <LanguageTargets>$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets</LanguageTargets>
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
    <PackageCertificateKeyFile>Test.UWP_TemporaryKey.pfx</PackageCertificateKeyFile>
  </PropertyGroup>


  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
    <OutputPath>bin\x86\Debug\</OutputPath>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
  </PropertyGroup>


  <PropertyGroup Condition="'$(Configuration)'=='Release'">
    <OutputPath>bin\x86\Release\</OutputPath>
    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
    <Optimize>true</Optimize>
    <PlatformTarget>x86</PlatformTarget>
    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
  </PropertyGroup>  


  <ItemGroup>    

    <!--XAML stuff-->
    <ApplicationDefinition Include="App.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </ApplicationDefinition>

    <Page Include="**\*.xaml" Exclude="App.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>        
    <Compile Update="**\*.xaml.cs" SubType="Code" DependentUpon="%(Filename)" />

     <AppxManifest Include="Package.appxmanifest">
      <SubType>Designer</SubType>
    </AppxManifest>

    <!--Local projects-->

    <!--Nuget references-->
  </ItemGroup>      

</Project>

但是,仍然存在一些问题:

  • 在比较库存UWP项目和我的自定义项目时,自定义项目的已编译/bin目录似乎不包括依赖项.dll。 (/ bin目录自定义项目在左边,/ bind UWP项目在右边。)

Image comparing resulting /bin directories

  • Visual Studio的智能感知抱怨内置XAML类型不受支持。

...导致最终的.exe在启动时立即崩溃。

有人对如何使这件事到达终点有任何建议吗?

Visual Studio error message

3 个答案:

答案 0 :(得分:2)

现在看来答案是否定的。 Per Oren Novotny,是制作MS Build SDK Extras的精明伙伴:

  

当前,您不能将SDK样式的项目用于应用程序本身,而只能用于UWP类库。项目系统还需要支持以正确的方式进行部署和启动。

答案 1 :(得分:1)

似乎答案是否定的

https://github.com/dotnet/sdk/issues/1408

显然

目前暂无计划支持。

答案 2 :(得分:-1)

第三方sdk,请参见novotnyllc/MSBuildSdkExtras: Extra properties for MSBuild SDK projects

<Project Sdk="MSBuild.Sdk.Extras">
  <PropertyGroup>
    <TargetFrameworks>net46;uap10.0.16299;tizen40</TargetFrameworks>
  </PropertyGroup>
</Project>