我将app.config转换添加到使用ClickOnce发布的现有Windows窗体客户端应用程序,现在它不会发布。错误讯息:
“OBJ \发布\ Client.csproj.App.config; OBJ \发布\ MyAppName.exe.config” 是“ConfigFile”参数的无效值 “GenerateApplicationManifest”任务。无法传递多个项目 到“Microsoft.Build.Framework.ITaskItem”类型的参数
当我取消选中“启用ClickOnce安全设置”(项目属性>安全性)时,项目将在没有此错误的情况下从Visual Studio 2015构建和运行,但是当我尝试使用ClickOnce发布时,错误将返回。启用安全性会导致项目根本无法构建。无论哪种方式,错误都是一样的。
app.config设置为“始终复制”。
我尝试删除clickonce证书并安装一个没有症状差异的新证书。
请注意,这是一个Windows窗体应用程序,而不是一个Web应用程序。转换是使用Configuration Transform扩展名创建的(与SlowCheetah的工作方式相同)。我已成功将此设置用于其他应用程序,到目前为止,此应用程序与成功应用程序之间的设置尚未发现差异。
.csproj文件的这一部分似乎与问题有关:
<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>
另一篇文章建议删除ItemGroup节点。当我这样做时,项目在VS中构建和运行,并且能够发布到测试位置,但app.config转换不会发生。
答案 0 :(得分:0)
已解决:这些症状是由Microsoft.Bcl在配置转换和ClickOnce一起发布时不能很好地引起的。这个应用程序是使用Bcl使用.NET 4创建的,以便在旧的XP机器上运行时使用async / await模式。我们的用户已升级到Windows 7&amp;从那时起,我就可以将应用程序升级到.NET 4.5.2并删除Bcl软件包。随着Bcl的消失,问题彻底解决了。 (可能会有某种破解让Bcl在配置转换和clickonce中正常工作,但由于我能够升级,所以不再追求它。)
答案 1 :(得分:0)
如果接受的答案对您不起作用(例如对我不起作用)。请查看此question的解决方案:
我遇到了同样的问题。对我来说固定的是从上面更改变换中的线
来自
<AppConfigWithTargetPath Remove="app.config" />
到
<AppConfigWithTargetPath Remove="@(AppConfigWithTargetPath)" />