2016-05-23 88 views
3

几个月前我开始研究一个新的ASP.NET Core RC1项目,并使用Visual Studio 2015发布了一个文件夹树,不使用项目C#源代码进行部署(因为它正在编译放置在文件夹树中的程序集中)。Visual Studio 2015(最新更新)发布函数不能编译ASP.NET Core RC1源码

现在,我已经升级的Visual Studio(只有VS不是项目保留在1.0.0- RC1决赛)为最新版本(大约五月,19 2016): “Microsoft .NET Core 1.0.0 RC2 - VS 2015 Tooling Preview 1”,“Microsoft .NET Core 1.0.0 RC2-SDK Preview 1(x64)”,“Microsoft ASP.NET 5 RC1 Update 1”(1.0.11123.0)和“Microsoft ASP.NET 5 RC1 Update 1”(1.0.20204.0)

它看起来最新的VS2015更新的新发布功能不再编译源代码,而是它放置到发布文件夹树项目c#来源。

有人可以指示我如何强制VS发布功能再次编译,而不是将c#源复制到发布文件夹?

+1

面对同样的问题。任何帮助将不胜感激! –

+0

你是否以管理员身份运行VS? – Harvey

+0

是的,但没有任何变化 – MarcMart

回答

3

我们从rc2工具中的发布对话框中删除了这个选项(“将源文件编译成NuGet包”),因为它不再适用于dotnet项目。

为了使用VS的-no-source选项发布rc1项目,您可以将此目标添加到pubxml(目标需要在项目内部和属性组外部)。

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
<all your existing property group values> 
    </PropertyGroup> 

    <Target Name="DnuNoSourcePublish" AfterTargets="GatherAllFilesToPublish" Condition=" '$(CompileSource)' == 'true' "> 
     <Exec 
      Condition="Exists('$(PublishOutputPath)') and '$(PublishOutputPath)'!='' " 
      Command="rmdir /S /Q &quot;$(PublishOutputPath)&quot;" 
      WorkingDirectory="$(MSBuildProjectDirectory)" /> 

     <PropertyGroup> 
      <DnuCommand>&quot;$(SDKToolingDirectory)\bin\dnu.cmd&quot; publish</DnuCommand> 
      <RuntimeArgument Condition=" '$(FinalPublishVersion)' != '' " >--runtime $(FinalPublishVersion)</RuntimeArgument> 
      <WwwRootArgument Condition=" '$(WebRoot)' != '' " >--wwwroot $(WebRoot)</WwwRootArgument> 
      <WwwRootOutArgument Condition=" '$(WwwRootOut)' != '' " >--wwwroot-out $(WwwRootOut)</WwwRootOutArgument> 
      <IISCommandArgument Condition =" '$(IISCommand)' != ''">--iis-command $(IISCommand)</IISCommandArgument> 
      <NoSourceArgument Condition=" '$(CompileSource)' == 'true' ">--no-source</NoSourceArgument> 
      <NativeArgument Condition="'$(NativeFlag)' == 'true'">--native</NativeArgument> 
      <IncludeSymbolsArgument Condition=" '$(IncludeSymbolsFlag)' == 'true'">--include-symbols</IncludeSymbolsArgument> 
      <QuietArgument Condition=" '$(QuietFlag)' == 'true'">--quiet</QuietArgument> 
     </PropertyGroup> 

     <Exec 
      Command="SET PATH=$(ExternalToolsPath);@(DnuPublishEnvironmentVariables) 
      $(DnuCommand) &quot;$(KPackWorkingDirectory)&quot; --out &quot;$(PublishOutputPathNoTrailingSlash)&quot; --configuration $(PublishConfiguration) $(RuntimeArgument) $(WwwRootArgument) $(WwwRootOutArgument) $(IISCommandArgument) $(NoSourceArgument) $(QuietArgument) $(NativeArgument) $(IncludeSymbolsArgument)" 
      WorkingDirectory="$(KPackWorkingDirectory)"/> 
     </Target> 
</Project> 

确保您的属性组有此属性设置

<CompileSource>true</CompileSource> 
+0

如指示修改的.pubxml未被识别为可运行的发布配置文件 – MarcMart

+1

修改发布配置文件(在项目部分内添加上述目标),您应该能够从发布对话框中调用发布,并且在将内容发布到服务器之前将执行此目标。 – vijayrkn

+0

它工作!,我的错误是取代.pubxml中的,一切都必须添加...标记的内容必须是:(我的原始版本, true)和(与发布完全一样) – MarcMart

0

展望VS是如何先于RC2更新发布时,我注意到两个:

C:\Users\(user)\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1\bin\dnu.cmd publish "(destinationFolder)" --out "C:\Users\(user)\AppData\Local\Temp\PublishTemp\(tempFolder)" --configuration Debug --no-source --runtime dnx-clr-win-x86.1.0.0-rc1-update1 --wwwroot "wwwroot" --wwwroot-out "wwwroot" --iis-command "web" --quiet

"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:contentPath='C:\Users\(user)\AppData\Local\Temp\PublishTemp\(tempFolder)\' -dest:contentPath='(destinationFolder)' -verb:sync -retryAttempts:2 -disablerule:BackupRule

so,个删除两个文件夹(destinationFolder)C:\Users\(user)\AppData\Local\Temp\PublishTemp\(tempFolder),并且运行两个命令上述“举手”,在命令提示符下,我得到了想要的结果

相关问题