[英]VS2010 build scripts to package DLLs into an MSI & register in the GAC
[英]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 Properties
, Output 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.