【发布时间】:2015-10-13 09:59:57
【问题描述】:
这是我得到的错误:
无法发布,因为项目构建失败。
无法复制文件“obj\Release\JobsRunner.exe.config”,因为找不到。
在搜索类似问题一小时后,我发现最接近的问题是缺少 exe 文件(我缺少配置文件),我尝试了建议的解决方案,但没有解决我的问题。
我发布这个问题的原因是: 一种。我仍然没有有效的解决方案 湾。我确实找到了一种解决方法,我想与遇到同样问题的人分享。
我的解决方法依赖于我愿意放弃发布我的配置文件的事实,因为我已经在发布目的地拥有了它的副本,并且在不久的将来它不会改变。 我所做的是编辑 .csproj 文件,我发现最后一个块是问题的原因:
<!--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>
所以我认为问题在于发布过程试图覆盖一个不存在的文件或类似的东西,我删除了那个块。现在发布对我有用。
我也尝试禁用 ClickOnce,因为我注意到此块与它相关,但没有成功。
有没有比我丑陋的解决方法更好的解决方案? :)
谢谢
【问题讨论】:
-
如果项目无法构建,那么就没有理由希望接下来发生的事情能够奏效。包括复制一个不存在的 .config 文件,因为您知道,它无法构建。关注第一个错误,而不是最后一个。
-
@HansPassant,你是对的,我很遗憾我没有提到当我尝试构建项目而不是发布它时,一切都很好并且没有问题。
标签: c# visual-studio visual-studio-2013 clickonce publishing