【手记】解决VS发布asp.net项目报错“该项目中不存在目标GatherAllFilesToPublish”及后续问题

办法在最后。

用VS2017打开一个以前用VS2010写的asp.net项目后,设置好发布选项(发布到文件夹),发布的时候报错如图:

搜索一番,找到的办法是:

在项目文件(xxx.csproj)中,在 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 上面添加一个 <PropertyGroup> 兄弟节点,添加好后如下:

...
  <PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
...

完了保存>重新加载项目,再次发布,仍然报一样的错误,重开VS2017依旧,遂打开一个用VS2017新建的asp.net项目文件,对照发现,新项目的 <Import Project=... 这个地方总共有3个,如下:

  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
  <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

而老项目的缺中间那个,于是把它誊过去,保存>重加载>发布,可以了。但是,出现了一个警告:

这是令人不安的,于是仔细对比俩项目的这几个节点,发现老项目的 <Import Project="$(MSBuildExtensionsPath32)... 元素中缺少了最后那个 Condition="false" 属性,加上,发布和警告都解决了。

总结办法,把老项目的这个地方:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

替换为:

<PropertyGroup>
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

- EOF -

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java成神之路

Saiku_学习_01_saiku安装与运行

访问 localhost:8080/upload.html ,可以看到一个让你上传license的页面,如下图:

24340
来自专栏菩提树下的杨过

redis 学习笔记(1)-编译、启动、停止

一、下载、编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先到这里下载...

23750
来自专栏尾尾部落

Mac中的定时任务利器:launchctl

当然mac也可以像linux系统一样,使用crontab命令来添加定时任务,这里就不赘述,具体可参见:OS X 添加定时任务

69950
来自专栏河湾欢儿的专栏

node初

www.nodejs.org 下载nodejs的安装文件, 然后就直接下一步,下一步,下一步傻瓜式安装 (打开命令符 widow+r 输入cmd) nod...

7610
来自专栏雪胖纸的玩蛇日常

使用Navicat for MySQL把本地数据库上传到服务器

51120
来自专栏一名合格java开发的自我修养

redis主从,哨兵回忆手册

  Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据(注意初次同步则会阻塞)。

12210
来自专栏听雨堂

Python输出信息

Python很多情况下,都是通过Console输出信息,大量翻屏滚动的信息,太乱。而pip安装的效果就很好,只是在一行输出信息,不断变化。网上找资料,不难。 用...

239100
来自专栏LinXunFeng的专栏

hexo+github 搭建个人技术博客

19830
来自专栏张善友的专栏

ASP.NET 2.0 中 Web 事件

ASP.NET 2.0 还提供了全功能的应用程序监视和健康监视。这个系统是由一个完全可扩展事件模型和一个能将事件发送到多种接收器的事件引擎组成的。举例来说,您可...

21770
来自专栏博客园

Redis持久化方式

     snapsotting是默认方式,(把数据做一个备份,将数据存储在文件)

28830

扫码关注云+社区

领取腾讯云代金券