在VS2012中发布带有内置版本的项目因“跳过不可发布的项目”而失败

时间:2014-04-07 13:31:48

标签: c# asp.net visual-studio-2012 msbuild msdeploy

我正在将当前的解决方案从VS2010迁移到VS2012,因为我正在尝试不支持Web部署项目"发布"该项目的功能。

我的要求是运行"发布"在运行构建时在项目上。这是一个" .csproj"使用发布方法"文件系统"也在发布的设置选项卡上我有"在发布期间预编译"和"将所有输出合并为单个组件"。

我可以通过右键单击项目并选择" Publish"来手动运行发布。它提供了所需的单个程序集并将其复制到正确的位置,我只需要在构建

上运行它

我试过以下无济于事

将单行添加到.csproj文件

    <DeployOnBuild>true</DeployOnBuild>

尝试将以下行添加到.csproj

<FilesToIncludeForPublish>OnlyFilesToRunTheApp</FilesToIncludeForPublish>
<DeployOnBuild>true</DeployOnBuild>
<DeployTarget>Package</DeployTarget>
<PackageAsSingleFile>true</PackageAsSingleFile>

命令行

MSBuild C:\MyProj.csproj /p:DeployOnBuild=true /p:PublishProfile=WebDeploy /p:CreatePackageOnPublish=True /p:VisualStudioVersion=11.0

以上命令导致

Build started 07/04/2014 14:01:05.
Project "C:\MyProj.csproj" on node 1 (default targets).
Build:
Running Publish
_DeploymentUnpublishable:
Skipping unpublishable project.
Done Building Project "C:\MyProj.csproj" (default targets).
Build succeeded.

3 个答案:

答案 0 :(得分:4)

我很高兴你解决了你的问题,但我一直在用自己的搜索来结束这一点,而且肯定不是McAfee(或任何防病毒软件)阻碍了我。所以对于最终到此为止的其他人来说,这里最终对我有用了:

我意识到我在命令行上正在/t:Publish而不是/t:Package。切换绕过&#34;跳过不可发布的项目&#34;步骤

最后的命令行应如下所示(为便于阅读而格式化):

MSBuild C:\MyProj.csproj 
   /p:DeployOnBuild=true 
   /p:PublishProfile=WebDeploy 
   /p:CreatePackageOnPublish=True 
   /p:VisualStudioVersion=11.0
   /p:OutputPath="bin\\"
   /t:Package

答案 1 :(得分:3)

令我惊讶的是,原来是迈克菲杀毒软件,它正在搞乱“发布”,我正在做正确的事情,一切正常,McAfee关闭,不知何故防病毒停止了aspnet_compiler .exe预编译网站,因此预编译和后续合并步骤(将dll合并为单个程序集)失败,希望没有人经历同样的痛苦才能找到它。

答案 2 :(得分:0)

我有同样的问题,原因是我的.csproj中的这一行:

<OutputType>WinExe</OutputType>

我将其更改为与Microsoft.Common.targets中的规则区分大小写:

<OutputType>winexe</OutputType>

我工作了!