msbuild无法在我的资产文件夹中找到文件

时间:2019-05-28 08:27:34

标签: visual-studio uwp msbuild

我正在尝试构建我的第一个uwp应用程序。我也是C#的新手。我正在使用Visual Studio构建工具2019。我认为我做对了所有事情,但是当我运行msbuild时,出现以下错误:

"C:\Projects\C\UapHello\uaphello.csproj" (default target) (1) ->

(_ ValidateAppxPackage目标)->   Package.appxmanifest(41,9):错误APPX0703:清单引用的文件'Assets \ Square150x150Logo.png'不是一部分  的有效载荷。 [C:\ Projects \ C \ UapHello \ uaphello.csproj]   Package.appxmanifest(42,9):错误APPX0703:清单引用文件'Assets \ Square44x44Logo.png',这不是o的一部分 f有效载荷。 [C:\ Projects \ C \ UapHello \ uaphello.csproj]   Package.appxmanifest(27,6):错误APPX0703:清单引用文件'StoreLogo.png',它不是有效负载的一部分 。 [C:\ Projects \ C \ UapHello \ uaphello.csproj]   Package.appxmanifest(45,27):错误APPX0703:清单引用文件'Assets \ SplashScreen.png',该文件不属于 有效载荷。 [C:\ Projects \ C \ UapHello \ uaphello.csproj]

我很确定这些文件存在于所述文件夹中。 我包括我的csproj和appmanifest:

    <?xml version="1.0" encoding="utf-8"?>

<Package
  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
  xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5" 
  xmlns:desktop4="http://schemas.microsoft.com/appx/manifest/desktop/windows10/4" 
  xmlns:iot2="http://schemas.microsoft.com/appx/manifest/iot/windows10/2" 
  IgnorableNamespaces="uap mp uap5 iot2 desktop4">

  <Identity
    Name="IggyMakesThings"
    Publisher="CN=IggyMakesThings, O=IggyMakesThings, L=Redmond, S=Washington, C=US"
    Version="1.0.0.0" />


  <mp:PhoneIdentity PhoneProductId="11a54d62-0d60-4e17-820d-1fa537715b3a" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

    <Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.17763.0" />
  </Dependencies>

  <Properties>
    <DisplayName>uaphello</DisplayName>
    <PublisherDisplayName>IggyMakesThings</PublisherDisplayName>
    <Logo>StoreLogo.png</Logo>
  </Properties>


  <Resources>
    <Resource Language="x-generate"/>
  </Resources>

  <Applications>
    <Application Id="App"
      Executable="uaphello.exe"
      EntryPoint="UAPHello.App">
      <uap:VisualElements
        DisplayName="UAPSample"
        Square150x150Logo="Assets\Square150x150Logo.png"
        Square44x44Logo="Assets\Square44x44Logo.png"
        Description="UAP C# Sample"
        BackgroundColor="#000000">
        <uap:SplashScreen Image="Assets\SplashScreen.png" />
        <uap:DefaultTile>
          <uap:ShowNameOnTiles>
            <uap:ShowOn Tile="square150x150Logo" />
          </uap:ShowNameOnTiles>
        </uap:DefaultTile>
      </uap:VisualElements>
    </Application>
  </Applications>


</Package>

和csproj:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">Win32</Platform>
    <ProjectGuid>{$guid1$}</ProjectGuid>
    <OutputType>AppContainerExe</OutputType>
    <RootNamespace>uaphello</RootNamespace>
    <DefaultLanguage>en-US</DefaultLanguage>
    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
    <TargetPlatformVersion>10.0.17763.0</TargetPlatformVersion>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    <EnableDotNetNativeCompatibleProfile>true</EnableDotNetNativeCompatibleProfile>  
  </PropertyGroup>


  <PropertyGroup>
    <OutputPath>bin\$(Platform)\$(Configuration)\</OutputPath>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    <PlatformTarget>x64</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
    <NoWarn>;2008</NoWarn>
    <DebugType>full</DebugType>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
    <PlatformTarget>x64</PlatformTarget>
    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
    <Optimize>true</Optimize>
    <NoWarn>;2008</NoWarn>
    <DebugType>pdbonly</DebugType>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|Win32'">
    <PlatformTarget>x86</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
    <NoWarn>;2008</NoWarn>
    <DebugType>full</DebugType>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|Win32'">
    <PlatformTarget>x86</PlatformTarget>
    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
    <Optimize>true</Optimize>
    <NoWarn>;2008</NoWarn>
    <DebugType>pdbonly</DebugType>
    <UseVSHostingProcess>false</UseVSHostingProcess>
    <ErrorReport>prompt</ErrorReport>
    <Prefer32Bit>true</Prefer32Bit>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Program.cs" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="6.2.8" />
  </ItemGroup>

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

   <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(VisualStudioVersion)\Microsoft.Windows.UI.Xaml.CSharp.targets" />

</Project>

请帮助

1 个答案:

答案 0 :(得分:0)

  

我认为您的.csproj文件中缺少某些内容导致了此问题。

重现相同问题的步骤:

1。创建一个新的空白应用程序(通用Windows)

2。在VS中,对于那些.png资源:从项目中排除

3。将解决方案复制到仅具有构建工具的构建服务器

4。还原nuget包,并使用以下命令构建项目:

msbuild path/xxx.csproj(or xxx.sln) /p:Platform=X64 /p:AppxBundle=Always 

5。获取以下错误: enter image description here

您可以按照我的简单步骤找到问题的原因。

我认为:

您可能会执行类似我的类似操作。也许Exclude from Project,也许删除xx.csproj文件中的ItemGroup内容,或者什么。

结果是删除xx.csproj中那些.png文件的ItemGroup。如果创建一个新的空白应用程序(UWP),并检查其.csproj文件的内容,则会看到:

<ItemGroup>
    <Content Include="Properties\Default.rd.xml" />
    <Content Include="Assets\LockScreenLogo.scale-200.png" />
    <Content Include="Assets\SplashScreen.scale-200.png" />
    <Content Include="Assets\Square150x150Logo.scale-200.png" />
    <Content Include="Assets\Square44x44Logo.scale-200.png" />
    <Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
    <Content Include="Assets\StoreLogo.png" />
    <Content Include="Assets\Wide310x150Logo.scale-200.png" />
  </ItemGroup>

但是您的.csproj文件中缺少这些内容。

在您的清单中使用的这四个文件确实位于asserts文件夹中。

但是如果没有.csproj文件中的内容引用,则构建过程将无法正确找到它们。Square150x150Logo.pngSquare44x44Logo.pngStoreLogo.pngSplashScreen.png

一种解决方法:

因此,您可以编辑xx.csproj文件,并将ItemGroup添加到其中。 但是我不确定肯定是否可以使用。因为在我检查了.csproj文件之后。也许.png文件不是您唯一排除或删除的内容!

我不确定您对项目进行了多少更改,因此,如果以上操作无济于事,只需创建一个新项目并将您的核心代码复制到新项目中即可。