我有一个 ASP.NET 应用程序,它依赖于 GAC 中不存在的外部程序集。该应用程序有一个 .refresh 文件,该文件在编译应用程序时将程序集复制到 bin 目录中。

当我在生产服务器上安装应用程序(通过将应用程序文件复制到虚拟目录中)时,bin 目录不会像我想象的那样因 .refresh 文件的存在而自动更新。我尝试使用 aspnet_compiler 工具,但这不起作用,因为它期望程序集已经位于 bin 目录中。

如何在没有 Visual Studio 的情况下让 .NET 更新应用程序的 bin 目录?

有帮助吗?

解决方案

在.refresh文件就在那里,这样VS知道它应该跟踪原件的,如果他们已经改变,一个新的版本复制到/ bin文件夹。他们只是文本文件与原来的路径 - 修改日期用于比较

当你说:

  

当我安装在生产服务器上的应用程序(由应用文件复制到虚拟目录),bin目录不会自动更新。

你到底是什么意思?你是不是也复制bin目录中的内容到生产服务器?您将需要部署与应用程序的任何依赖程序。

其他提示

清除asp.net的缓存目录可能有帮助:

C:\WINDOWS\Microsoft.NET\Framework\
FRAMEWORK_VERSION\Temporary ASP.NET Files\YOUR_APP_NAME

删除那些 .refresh 文件。

制作一个简单的构建脚本(使用任何你想要的 cmd、NAnt、Rake、psake ...):

  • 将这些文件复制到您的 ASP.NET 应用程序文件夹
  • 构建您的 ASP.NET 应用程序。

或者您可以编辑 .csproj 文件并添加如下内容:

<ProjectExtensions>
  <PropertyGroup>
    <PreBuildEvent>copy c:\path\to\dll\files $(ProjectDir)$(OutDir)</PreBuildEvent>
  </PropertyGroup>
</ProjectExtensions>

这将添加一个预构建操作,将您的 dll 文件复制到 ASP.NET 应用程序的输出目录。您必须使用 MsBuild 来构建它

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top