2012-08-09 80 views
0

項目中包含查看嵌入意見DLL,讓我們叫它View1.ascx標記爲在屬性窗口中的「嵌入的資源」Visual Studio的鎖定,因爲使用「嵌入的資源」

兩個項目A和項目B和C使用自定義資源提供程序從PROJECTA.DLL加載該視圖1

這樣我就可以在項目中重複使用我的視圖。

可悲的是,這將導致Visual Studio來無法建立項目B,或C第一次,每次更改PROJECTA.dll

"Error 12 Could not copy "C:\GIT\PROJECTA\PROJECTA\bin\PROJECTA.dll" to "bin\PROJECTA.dll". Exceeded retry count of 10. Failed." 

後有沒有什麼辦法,使這項工作?還是應該以某種方式將所有「重用」視圖移至單獨的程序集?這些視圖使用了PROJECT A的類,所以這就是爲什麼我把它們放在裏面的原因。PROJECT A

爲了使一切變得清晰:圍繞通常的作品第二次構建它,代碼和視圖都工作正常,這只是一個非常大的浪費時間不得不等待10秒,以便第一次構建嘗試失敗。

回答

2

Apparantly我assemblyresourceprovider使用AssemblyResourceVirtualFile:VirtualFile oebject這是加載從Assembly.LoadFile我的DLL,而不是使用在內存中加載DLL的推薦方法如下所述:http://fzysqr.com/2010/04/26/asp-net-mvc2-plugin-architecture-tutorial/ 我離開了舊的代碼行中簡評供您大家看看問題出在哪裏

public override System.IO.Stream Open() 
{ 
    string[] parts = path.Split('/'); 
    string assemblyName = parts[2]; 
    string resourceName = parts[3]; 


    assemblyName = Path.Combine(HttpRuntime.BinDirectory, assemblyName); 
    byte[] assemblyBytes = File.ReadAllBytes(assemblyName); 
    System.Reflection.Assembly assembly = Assembly.Load(assemblyBytes); 
    /*System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFile(assemblyName);*/ 
    if (assembly != null) 
    { 
     Stream resourceStream = assembly.GetManifestResourceStream(resourceName); 
     return resourceStream; 
    } 
    return null; 
}