2010-04-05 89 views
1

我有一个类库项目,其中包含一些内容文件配置了“复制如果较新”复制构建操作。这会导致文件被复制到解决方案中每个项目的...\bin\下的文件夹中。在这个相同的解决方案中,我有一个ASP.NET web项目(顺便说一下,这是MVC)。在库中,我有一个静态构造函数将文件加载到Web项目可访问的数据结构中。以前,我一直将内容作为嵌入式资源加入。我现在需要能够替换它们而不用重新编译。我想访问在三个不同的上下文中的数据:ASP.NET - 访问复制内容

  1. 单元测试库组件
  2. 调试Web应用程序
  3. 托管在IIS

现场进行单元测试,Environment.CurrentDirectory点包含复制内容的路径。但是,在调试时,它指向C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE。我也看过Assembly.GetExecutingAssembly().Location,指向C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\c44f9da4\9238ccc\assembly\dl3\eb4c23b4\9bd39460_f7d4ca01\。我需要的是webroot \bin文件夹的物理位置,但由于我处于库项目的静态构造函数中,因此我无法访问Request.PhysicalApplicationPath

是否有其他的环境变量或结构,我总是可以找到我的“复制如果是新的”文件?

回答

1

Assembly.Location确实指向组件被阴影复制后的位置。

但是,MSDN页面状态:

要获得位置的文件已被影像复制之前,使用CodeBase property

+0

真棒,这似乎是做伎俩。 – 2010-04-05 20:42:05