簡體   English   中英

VS2010 DLL不更新

[英]VS2010 DLLs not updating

我有一個解決方案(ASP.NET,.NET 4.0),似乎無法正確更新其dll。 我注意到,當我在進行更改后對其進行編譯時,看不到我所做的添加。

我最近將解決方案上的目標平台切換到x86,因為我們現在將其部署到x64服務器上,並且現在將其維護在x64 Win7計算機上。 (我不知道這是否與它有關,請參閱下文。)在隔離問題之后,在進行測試時,我發現如果我在一個aspx文件中選擇了“在瀏覽器中查看”,突然看到了我之前所做的更改。 我梳理了主項目的bin文件夾中的目錄,發現dll被保存到兩個不同的位置:bin文件夾的根目錄和bin / x86 / debug /。 當我簡單地編譯解決方案時,第一個位置正在更新,而當我在其中一個aspx文件中使用“在瀏覽器中查看”時,第二個位置正在更新。

有誰知道可能導致此行為的錯誤設置?

更新:@Vinkal提供的答案使我相信Debug正在查看已編譯代碼的bin/文件夾,而不是正在將代碼編譯到的bin/x86/debug/ 這可能是核心問題嗎?

我梳理了主項目的bin文件夾中的目錄,發現dll被保存到兩個不同的位置:bin文件夾的根目錄和bin / x86 / debug /。 當我簡單地編譯解決方案時,第一個位置正在更新,而當我在其中一個aspx文件中使用“在瀏覽器中查看”時,第二個位置正在更新。

檢查Configutation Manager是否選擇了哪個platform ,如下面的屏幕快照#1所示。

屏幕截圖1:配置管理器

配置管理器

如果創建新platform (此處為x86 ),則Output Path將自動設置為bin\\x86\\Debug\\ 請參見下面的屏幕截圖。

屏幕截圖#2: 選擇“項目屬性”時的“構建設置”

從項目屬性生成事件選項

因此,當您編譯項目時,將根據Output Path (在bin\\x86\\Debug\\例中為Platform Target設置的Platform x86 bin\\x86\\Debug\\復制Binaries。 確認,如下面的屏幕快照所示,編譯時將復制所有二進制文件。 如前所述,編譯解決方案時, bin文件夾的根目錄正在更新。 因此對於您在Platform Target設置的任何Platform (Any CPU, x86 or x64)您的項目的Output Path必須設置為Bin文件夾的Root。

注意:如果Post-Build event commmand設置為復制二進制文件,它也將被復制到Path中指定Post-Build event command

在此處輸入圖片說明

在瀏覽器中查看:使用View in browser打開頁面時,將再次編譯頁面,並根據Project Properties指定的Output Path復制二進制文件,如屏幕快照#2所示 正如您提到的那樣,當您在瀏覽器中查看頁面時bin\\x86\\Debug\\已更新,這表明在Project PropertiesOutput Path設置為bin\\x86\\Debug\\在下面顯示的屏幕快照中,當頁面為使用View in Browser打開,二進制將進入Bin文件夾,並且平台被選為Any CPU

在此處輸入圖片說明

生成后事件命令:如果您還設置了生成Post-build event command (如下面的屏幕快照所示),則在兩種情況下(即,當您View in Browser編譯和View in Browser )都將路徑復制到其他位置。將被復制到Post-build event command指定的Path

在此處輸入圖片說明

編輯:

如所提到的在這里 ,可以使用<probing>元素:

您可以使用應用程序配置文件中的元素來指定運行時在查找assembly時應搜索的子目錄。 以下示例顯示了如何指定運行時應搜索的目錄。

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="bin;bin2\subbin;bin3"/>
      </assemblyBinding>
   </runtime>
</configuration>

privatePath屬性包含運行時應搜索assemblies的目錄。 如果應用程序位於C:\\ Program Files文件\\ MyApp的,運行時會尋找assemblies沒有指定在C代碼庫:\\ Program Files文件\\ MyApp的\\ BIN,C:\\ Program Files文件\\ MyApp的\\斌\\ Subbin,和C:\\ Program Files \\ MyApp \\ Bin3。 privatePath中指定的目錄必須是應用程序基本目錄的子目錄

因此,根據您的情況,如下所示修改web.config

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="bin;bin\x86\debug"/>
      </assemblyBinding>
   </runtime>
</configuration>

您可以嘗試通過在“工具”->“選項”->“調試”->“符號”中更改不同的配置來解決此問題。

暫無
暫無

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

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