簡體   English   中英

將NuGet與ASP.NET“網站”項目中的* .dll.refresh文件與Web部署項目一起使用

[英]Using NuGet with *.dll.refresh files in ASP.NET “Web Site” projects with Web Deployment Projects

如果您有一個ASP.NET網站項目類型(沒有適當的.csproj或.vpproj項目文件,而這只是一個松散文件的文件夾),那么當您使用NuGet添加一個程序包時,它將生成一個* .dll Bin目錄中的.refresh文件引用父程序包文件夾中的程序包dll。

例如,如果從程序包管理器控制台執行“ install-package elmah”,則Elmah將放置在項目的解決方案目錄的packages文件夾中,文件Elmah.dll.refresh將放置在項目的Bin文件夾中。

當我在本地生成項目時,Visual Studio會自動提取刷新文件引用的DLL。 該站點和Elmah正常運行。 我沒有將位於項目Bin目錄中的Elmah.dll文件簽入到源代碼管理中(僅簽入了刷新文件和packages文件夾)。

但是,我正在使用Web部署項目來預編譯站點,並進行web.config替代部署。 以這種方式構建解決方案時,Elmah.dll不會自動拉入網站項目的Bin目錄,並且由於缺少DLL而無法正確運行該網站。

NuGet如何在這種情況下使用? 我是否想在Bin目錄中簽入Elmah.dll?

這是基於上述GC。解決方案的。 添加一個類庫(csproj),並在網站項目中引用該類庫。 將nuget包添加到類庫。 在類庫中, 實際上在某些類文件中引用nuget包 也許創建一個一次性實例或其他東西。 您可以使用包中包含的任何類。 這將強制將.dll復制到網站項目中的Bin目錄。

-編輯-請參閱上面的此解決方案的更新版本。

只需將類庫項目添加到解決方案中,然后將對類庫項目的引用添加到您的網站。

然后,將nuget添加到類庫中,而不是網站項目中。

當您的網站建立時,它依次提取所有類庫的依賴項。

我猜預編譯不會使用.refresh文件更新DLL-也許是由Visual Studio完成的。

如果找不到解決方法,則可以創建一個構建步驟,將DLL手動復制到bin文件夾中,或者如果您嘗試避免DLL的兩個副本,也許您可​​以簽入bin文件夾而不是包裝之一。 您可以使用NuGet.exe重新獲取程序包,並填充程序包文件夾(請參閱此處此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM