2017-08-11 106 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 

您需要重启视觉工作室