ClickOnce发布期间出错

时间:2016-07-25 10:16:00

标签: c# wpf clickonce manifest publish

我正在尝试使用ClickOnce部署WPF应用程序。当我尝试发布我的app时,我收到以下构建错误:

  

“obj \ Debug .... csproj.App.config; obj \ Debug .... exe.config”是一个   “ConfigFile”参数的值无效   “GenerateApplicationManifest”任务。无法传递多个项目   到“Microsoft.Build.Framework.ITaskItem”类型的参数。

我在Enable ClickOnce security settings标签中关闭了Properties Security并且应用程序构建正常,但是当我尝试发布我的app时,此选项会自动返回,我再次收到错误。< / p>

有什么想法吗?

.csproj文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" 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>
    <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{69869EA8-6B7F-4619-B2FD-330ACD1C67DC}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>XXXXX</RootNamespace>
    <AssemblyName>XXXXX</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <WarningLevel>4</WarningLevel>
    <SccProjectName>SAK</SccProjectName>
    <SccLocalPath>SAK</SccLocalPath>
    <SccAuxPath>SAK</SccAuxPath>
    <SccProvider>SAK</SccProvider>
    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
    <RestorePackages>true</RestorePackages>
    <IsWebBootstrapper>false</IsWebBootstrapper>
    <PublishUrl>D:\Prj\Deployments\YYYY\</PublishUrl>
    <Install>true</Install>
    <InstallFrom>Unc</InstallFrom>
    <UpdateEnabled>true</UpdateEnabled>
    <UpdateMode>Foreground</UpdateMode>
    <UpdateInterval>7</UpdateInterval>
    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
    <UpdatePeriodically>false</UpdatePeriodically>
    <UpdateRequired>true</UpdateRequired>
    <MapFileExtensions>true</MapFileExtensions>
    <InstallUrl>\\localhost\TEMP\Deployments\</InstallUrl>
    <UpdateUrl>http://localhost</UpdateUrl>
    <SupportUrl>http://localhost</SupportUrl>
    <ProductName>YYYY</ProductName>
    <PublisherName>ZZZZ YYYY</PublisherName>
    <SuiteName>ZZZZ YYYY</SuiteName>
    <MinimumRequiredVersion>1.0.0.1</MinimumRequiredVersion>
    <ApplicationRevision>1</ApplicationRevision>
    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
    <UseApplicationTrust>false</UseApplicationTrust>
    <CreateDesktopShortcut>true</CreateDesktopShortcut>
    <PublishWizardCompleted>true</PublishWizardCompleted>
    <BootstrapperEnabled>true</BootstrapperEnabled>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <UseVSHostingProcess>false</UseVSHostingProcess>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>x86</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup>
    <ManifestCertificateThumbprint>8F11330D41A056DBB7C8E399BE6B43740EC64755</ManifestCertificateThumbprint>
  </PropertyGroup>
  <PropertyGroup>
    <ManifestKeyFile>XXXXX_TemporaryKey.pfx</ManifestKeyFile>
  </PropertyGroup>
  <PropertyGroup>
    <GenerateManifests>true</GenerateManifests>
  </PropertyGroup>
  <PropertyGroup>
    <TargetZone>Custom</TargetZone>
  </PropertyGroup>
  <PropertyGroup>
    <SignManifests>true</SignManifests>
  </PropertyGroup>
  <ItemGroup>
    ...
    <Reference Include="WindowsBase" />
    <Reference Include="PresentationCore" />
    <Reference Include="PresentationFramework" />
  </ItemGroup>
  <ItemGroup>
    <ApplicationDefinition Include="App.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </ApplicationDefinition>
    <Compile Include="App.xaml.cs">
      <DependentUpon>App.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Compile>
    <Compile Include="Bootstrapper.cs" />
    <Compile Include="Resources\TestTheme.xaml.cs">
      <DependentUpon>TestTheme.xaml</DependentUpon>
    </Compile>
    <Compile Include="Shell.xaml.cs">
      <DependentUpon>Shell.xaml</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Properties\AssemblyInfo.cs">
      <SubType>Code</SubType>
    </Compile>
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
    <Compile Include="Properties\Settings.Designer.cs">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <DesignTimeSharedInput>True</DesignTimeSharedInput>
    </Compile>
    <EmbeddedResource Include="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
    <None Include="App.Debug.config">
      <DependentUpon>App.config</DependentUpon>
    </None>
    <None Include="App.Release.config">
      <DependentUpon>App.config</DependentUpon>
    </None>
    <Content Include="NLog.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <None Include="XXXXX_TemporaryKey.pfx" />
    <None Include="NLog.xsd">
      <SubType>Designer</SubType>
    </None>
    <None Include="packages.config" />
    <None Include="Properties\app.manifest">
      <SubType>Designer</SubType>
    </None>
    <None Include="Properties\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
    </None>
    <AppDesigner Include="Properties\" />
  </ItemGroup>
  <ItemGroup>
    <None Include="App.config">
      <SubType>Designer</SubType>
    </None>
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\..\..\Framework\Entidad\ZZZZ.AAAA.Entidad\ZZZZ.AAAA.Entidad.csproj">
      <Project>{6c7ed6cb-c453-41bc-9bfc-e9105a065615}</Project>
      <Name>ZZZZ.AAAA.Entidad</Name>
    </ProjectReference>
    <ProjectReference Include="..\BBBB.Contracts\BBBB.Contracts.csproj">
      <Project>{65bab214-c87d-496f-b7ce-03a73aa3a685}</Project>
      <Name>BBBB.Contracts</Name>
    </ProjectReference>
    <ProjectReference Include="..\BBBB.Entidad\BBBB.Entidad.csproj">
      <Project>{4a61ec1c-253d-477c-a8c9-87aef600d69d}</Project>
      <Name>BBBB.Entidad</Name>
    </ProjectReference>
    <ProjectReference Include="..\BBBB.Localizacion\BBBB.Localizacion.csproj">
      <Project>{fe2246fa-ba74-4e91-9ad9-c2606c2ba4b1}</Project>
      <Name>BBBB.Localizacion</Name>
    </ProjectReference>
    <ProjectReference Include="..\BBBB.Presentation.Core\BBBB.Presentation.Core.csproj">
      <Project>{5b1b5735-ee66-4956-b68c-429cc6b01ea0}</Project>
      <Name>BBBB.Presentation.Core</Name>
    </ProjectReference>
    <ProjectReference Include="..\BBBB.Resources\BBBB.Resources.csproj">
      <Project>{0f408753-5a8c-4780-8280-1bed14660c69}</Project>
      <Name>BBBB.Resources</Name>
    </ProjectReference>
    <ProjectReference Include="..\XXXXX.Comun\XXXXX.Comun.csproj">
      <Project>{4b0efbde-e1c8-4c54-a43c-c7d5f85dd95f}</Project>
      <Name>XXXXX.Comun</Name>
    </ProjectReference>
    <ProjectReference Include="..\XXXXX.ScreenKeyboard\XXXXX.ScreenKeyboard.csproj">
      <Project>{6b779f3c-fa16-4bb8-96a8-ab5296694235}</Project>
      <Name>XXXXX.ScreenKeyboard</Name>
    </ProjectReference>
    <ProjectReference Include="..\BBBB.WebApi.Client\BBBB.WebApi.Client.csproj">
      <Project>{45a506ec-bee9-4ea1-9a7d-fef5491f2859}</Project>
      <Name>BBBB.WebApi.Client</Name>
    </ProjectReference>
    <ProjectReference Include="..\BBBB.WebApi.Contracts\BBBB.WebApi.Contracts.csproj">
      <Project>{1c5240a4-7946-4817-8cf6-70de8a637299}</Project>
      <Name>BBBB.WebApi.Contracts</Name>
    </ProjectReference>
    <ProjectReference Include="..\Mocks.WebApi.Client\Mocks.WebApi.Client.csproj">
      <Project>{21a66fd4-3548-4c18-805d-5d5ae5246cad}</Project>
      <Name>Mocks.WebApi.Client</Name>
    </ProjectReference>
  </ItemGroup>
  <ItemGroup>
    <Page Include="Resources\TestTheme.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>
    <Page Include="Shell.xaml">
      <SubType>Designer</SubType>
      <Generator>MSBuild:Compile</Generator>
    </Page>
  </ItemGroup>
  <ItemGroup>
    <BootstrapperPackage Include=".NETFramework,Version=v4.5">
      <Visible>False</Visible>
      <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
      <Install>true</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Windows.Installer.4.5">
      <Visible>False</Visible>
      <ProductName>Windows Installer 4.5</ProductName>
      <Install>true</Install>
    </BootstrapperPackage>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>
  <Import Project="..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
  <Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
    <Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
    <Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
  </Target>
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
  <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
  <Target Name="AfterCompile" Condition="Exists('App.$(Configuration).config')">
    <!--Generate transformed app config in the intermediate directory-->
    <TransformXml Source="App.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="App.$(Configuration).config" />
    <!--Force build process to use the transformed configuration file from now on.-->
    <ItemGroup>
      <AppConfigWithTargetPath Remove="App.config" />
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
        <TargetPath>$(TargetFileName).config</TargetPath>
      </AppConfigWithTargetPath>
    </ItemGroup>
  </Target>
  <!--Override After Publish to support ClickOnce AfterPublish. Target replaces the untransformed config file copied to the deployment directory with the transformed one.-->
  <Target Name="AfterPublish">
    <PropertyGroup>
      <DeployedConfig>$(_DeploymentApplicationDir)$(TargetName)$(TargetExt).config$(_DeploymentFileMappingExtension)</DeployedConfig>
    </PropertyGroup>
    <!--Publish copies the untransformed App.config to deployment directory so overwrite it-->
    <Copy Condition="Exists('$(DeployedConfig)')" SourceFiles="$(IntermediateOutputPath)$(TargetFileName).config" DestinationFiles="$(DeployedConfig)" />
  </Target>
  <PropertyGroup>
    <PreBuildEvent>(if exist "$(TargetDir)*old.pdb" del "$(TargetDir)*old.pdb") &amp; (if exist "$(TargetDir)*.pdb" ren "$(TargetDir)*.pdb" *.old.pdb)</PreBuildEvent>
  </PropertyGroup>
</Project>

3 个答案:

答案 0 :(得分:1)

尝试编辑项目中的.csproj文件,并在<PropertyGroup>下面的行中添加以下内容:

<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>

答案 1 :(得分:1)

尝试从obj \ debug文件夹中删除文件,然后再次尝试发布。 还要检查是否签署了clickonce清单复选框?

enter image description here

答案 2 :(得分:0)

最后我发现了这个问题。在行中的.csproj文件中:

<Target Name="AfterCompile" Condition="Exists('App.$(Configuration).config')">
    <!--Generate transformed app config in the intermediate directory-->
    <TransformXml Source="App.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="App.$(Configuration).config" />
    <!--Force build process to use the transformed configuration file from now on.-->
    <ItemGroup>
      <AppConfigWithTargetPath Remove="App.config" />
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
        <TargetPath>$(TargetFileName).config</TargetPath>
      </AppConfigWithTargetPath>
    </ItemGroup>
  </Target>

我删除了该块:

<ItemGroup>
          <AppConfigWithTargetPath Remove="App.config" />
          <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
            <TargetPath>$(TargetFileName).config</TargetPath>
          </AppConfigWithTargetPath>
        </ItemGroup>

现在项目正在成功建设。