繁体   English   中英

Visual Studio 2012未发布System.Web.Helpers

[英]System.Web.Helpers not being published by Visual Studio 2012

我完全被这个困扰。 我通过Google Stack溢出发现的想法对我不起作用,我也不知道为什么。

我们最近将项目升级到了带有.NET 4.5的Visual Studio 2012和MVC 4,现在该项目无法正确发布。

我们还有另一个分支,该分支只是在Visual Studio 2012中发布项目,而无需升级到MVC4或.NET4.5,并且似乎可以正常工作,因此我猜测这不是Visual Studio问题。 就像在我们的项目中设置MVC 4一样。 通过直接从我们在源代码管理中创建的lib文件夹(但不在任何项目中)引用DLL来添加MVC 3。 MVC 4是通过NuGet添加的。

问题是System.Web.Helpers(以及其他)没有出现在已发布应用程序的bin目录中。 这意味着,当它放在测试服务器上时,它将由于缺少DLL而无法运行。

  • 我已将“本地复制”设置为TRUE(实际上已经是,但是如果关闭又重新打开,则将其关闭)。 我还在某处读到,如果该文件存在于GAC中,则此设置是什么都不会影响,也不会复制。 但是,我已经检查过了,它不在GAC中。
  • 我确保MVC应用程序中的引用指向NuGet包文件夹中文件的版本。 (它不是最初的,但是我手动编辑了csproj文件来执行此操作,因为删除和读取NuGet包无济于事)
  • 我添加了一个构建后事件来复制相关文件(尽管它们位于项目的bin目录中,但这并不影响发布)
  • 根据Phil Haack的博客 ,我尝试将_bin_deployableAssemblies文件夹放置在适当的位置,但是看来这在Visual Studio 2012中不起作用
  • 我已经尝试修改csproj文件(这只是一个MSBuild文件), 按照此SO答案为我复制相关文件。 但是出于某种原因,它也不起作用。

我用尽了所有可以尝试的东西。 好吧,我总是可以手动复制文件,如一些在其他地方提出的答案所建议的那样,但这违背了目的。

有任何想法吗?

更新

在上面的要点中添加了我尝试过的对我不起作用的更多内容。

这个怎么样:

  1. 右键单击解决方案资源管理器中的MVC项目。
  2. 添加可部署的依赖项
  3. 勾选MVC

我找到了答案。 这有点骇人,因为我无法使MSBuild copy命令正常工作,因此我使用Exec命令获取xcopy来为我执行复制。

首先,我在项目中添加了一个名为_bin_PublishAssemblies的文件夹,并在其中放置了需要发布的程序集,以使构建过程尚未开始。

然后,在csproj文件的末尾添加了以下内容:

  <Target Name="AfterBuild">
    <Message Text="Build | Copying assemblies to output folder ($(OutputPath))" Importance="high" />
    <Exec Command="ECHO Going to copy from '$(ProjectDir)\_bin_PublishAssemblies'" />
    <Exec Command="xcopy $(ProjectDir)\_bin_PublishAssemblies\* $(OutputPath) /Y" />
  </Target>
  <Target Name="CopyBinFiles" AfterTargets="CopyAllFilesToSingleFolderForPackage" BeforeTargets="MSDeployPublish">
    <Message Text="Deploy | Copying assemblies to output folder ($(_PackageTempDir)\bin\)" Importance="high" />
    <Exec Command="ECHO Going to copy from '$(ProjectDir)\_bin_PublishAssemblies'" />
    <Exec Command="xcopy $(ProjectDir)\_bin_PublishAssemblies\* $(_PackageTempDir)\bin\ /Y" />
  </Target>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM