2017-08-11 111 views
0

我在我的web項目中創建了我自己的T4 Tempalte,它從我當前的Solution中加載使用的程序集並創建一些文件。從web.config使用assemblybinding/bindingRedirect的C#T4

到目前爲止工作正常。但是現在我已經將我的一個NuGet組件更新爲新版本,並且添加了一個assemblyBinding部分,以便舊版本和我的組件的較新版本能夠工作。這對我的網站本身來說也很好。

但我的T4模板現在帶來了

​​

看來,我的T4模板不讀書在web.config我assemblyBinding部分是可能的,是有這個withoug更新我組裝的參考解決方法在每個依賴的dll中。

我正在使用T4模板和編譯後的Dll代碼實現,並在我的DLL中我加載了我的組件,什麼工作正常。

var assemblies = Factory.CreateAssemblyManager().LoadAssemblies(proxySettings.WebProjectName, proxySettings.FullPathToTheWebProject); 

然後我搜尋每一個組件內爲我的自定義屬性,在這裏我得到上述錯誤,該文件或程序無法加載。

foreach (Assembly assembly in assemblies) 
    { 
     var types = assembly.GetTypes().Where(type => type.GetMethods().Any(p => p.GetCustomAttributes(typeof (CreateProxyBaseAttribute), true).Any())).ToList(); 
    } 

德國錯誤:

{ 「死Datei奧德大會\」 Internal.Xyz.DomainModel,版本= 2.1.0.0,文化=中性公鑰= d72343e09836ed19 \」奧得EINEAbhängigkeitdavon wurde nicht gefunden 。「Das System kann die angegebene Datei nicht finden。」:「Internal.Xyz.DomainModel,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = d72343e09836ed19」}

+0

您能否顯示重要的p導致依賴性錯誤的模板代碼?這個T4模板是否被用作特定ORM(EF或其他)的一部分? –

回答

0

問題是,T4 Template沒有使用web.config項目中,T4模板在Visual Studio的上下文中運行,並使用Visual Studio的配置。

要解決的問題是編輯從Visual Studio的配置並添加dependentAssembly綁定有

對VS 2015年使用以下路徑

​​ 在VS 2017年

你需要使用此路徑

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE 

您需要重啓視覺工作室