【问题标题】:System.Web.Helpers not being published by Visual Studio 2012Visual Studio 2012 未发布 System.Web.Helpers
【发布时间】:2013-10-10 13:03:43
【问题描述】:

我完全被这个难住了。我通过谷歌堆栈溢出找到的想法对我不起作用,我不知道为什么。

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

我们有另一个分支,它只是在 Visual Studio 2012 中发布项目,而没有升级到 MVC4 或 .NET4.5,这似乎工作,所以我猜这不是 Visual Studio 问题。只是在我们的项目中设置 MVC 4 的方式。 MVC 3 是通过直接从我们在源代码管理中创建的 lib 文件夹(但在任何项目之外)引用 DLL 来添加的。 MVC 4 是通过 NuGet 添加的。

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

  • 我已将 Copy Local 设置为 TRUE(实际上,它已经是,但如果关闭并再次打开,我将其关闭)。我还在某处读到,如果文件存在于 GAC 中,则无论此设置是什么,它都不会复制。但是,我查过,它不在 GAC 中。
  • 我已确保 MVC 应用程序中的引用指向 NuGet 包文件夹中的文件版本。 (最初不是,但我手动编辑了 csproj 文件来执行此操作,因为删除和读取 NuGet 包没有帮助)
  • 我添加了一个构建后事件来复制相关文件(这不影响发布,尽管它们位于项目的 bin 目录中)
  • 我已尝试按照Phil Haack's blog 放置一个_bin_deployableAssemblies 文件夹,但似乎是doesn't work in Visual Studio 2012
  • 我尝试修改 csproj 文件(它只是一个 MSBuild 文件)为我复制相关文件,as per this SO answer。但无论出于何种原因,它也不想工作。

我可以尝试的东西已经用完了。好吧,我总是可以像其他地方的一些 SO 答案所建议的那样手动复制文件,但这违背了目的。

有什么想法吗?

更新

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

【问题讨论】:

    标签: c# asp.net-mvc-4 visual-studio-2012 .net-4.5


    【解决方案1】:

    这个怎么样:

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

    【讨论】:

    • 我没有那个选项。我确实在 Phil Haack 的博客上阅读过它,并且我手动尝试了该操作,但无论如何它在 VS 2012 上都不起作用:stackoverflow.com/questions/12389368/…
    【解决方案2】:

    我找到了答案。这有点麻烦,因为我无法让 MSBuild 复制命令工作,所以我使用 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 2012-08-27
      • 1970-01-01
      相关资源
      最近更新 更多