2010-04-05 113 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