System.Web.Helpers 未由 Visual Studio 2012 发布
本文关键字:Studio 2012 发布 Visual 未由 Web Helpers System | 更新日期: 2023-09-27 18:34:49
我完全被这个难倒了。我通过谷歌堆栈溢出找到的想法对我不起作用,我不知道为什么。
我们最近将项目升级到 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。
- 我已将"本地复制"设置为TRUE(实际上,它已经是,但是如果关闭并再次打开,我将其打开(。我还在某处读到,如果该文件存在于 GAC 中,那么此设置是什么都无关紧要,它不会复制。但是,我已经检查过,它不在 GAC 中。
- 我已确保 MVC 应用程序中的引用指向 NuGet 包文件夹中的文件版本。(最初不是,但我手动编辑了 csproj 文件来执行此操作,因为删除和重新添加 NuGet 包没有帮助(
- 我添加了一个构建后事件来复制相关文件(这不会影响发布,尽管它们位于项目的 bin 目录中(
- 我试图按照Phil Haack的博客放置一个
_bin_deployableAssemblies
文件夹,但这似乎在Visual Studio 2012中不起作用。 - 我尝试修改 csproj 文件(只是一个 MSBuild 文件(以根据此 SO 答案为我复制相关文件。但出于什么原因,这也不想工作。
我已经没有可以尝试的东西了。好吧,我总是可以手动复制文件,就像一些SO答案在其他地方建议的那样,但这违背了目的。
有什么想法吗?
更新
在上面的项目符号中添加了更多内容,用于我尝试过对我不起作用的事情。
这个怎么样:
- 右键单击解决方案资源管理器中的 MVC 项目。
- 添加可部署的依赖项
- 滴答MVC
我找到了答案。这有点黑客,因为我无法让 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>