C# T4 使用来自 web.config 的 assemblybinding / bindingRedirect

C# T4 using assemblybinding / bindingRedirect from web.config

我在我的 Web 项目中创建了我自己的 T4 Tempalte,它从我当前的解决方案中加载使用过的程序集并创建了一些文件。

到目前为止一切正常。但现在我已将我的一个 NuGet 组件更新为新版本,并添加了一个 assemblyBinding 部分,以便我的组件的旧版本和新版本都能正常工作。到目前为止,这对我的网站本身也很有效。

但是我的 T4 模板现在带来了

The File or Assembly "\xxx...\...." or a dependency could not be found

我的 T4 模板似乎没有读取 web.config 中的 assemblyBinding 部分,这是可能的吗?是否有解决方法,无需更新每个相关 dll 中的程序集引用。

我正在使用带有已编译 Dll 的 T4 模板来实现代码,在我的 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();
   }

德语错误:

{"Die Datei oder Assembly \"Internal.Xyz.DomainModel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=d72343e09836ed19\" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden." :"Internal.Xyz.DomainModel, Version=2.1.0.0, Culture=neutral, PublicKeyToken=d72343e09836ed19"}

问题是,T4 模板没有在项目内部使用 web.config,T4 模板在 visual studio 的上下文中是 运行,并使用来自 visual Studio.

要解决此问题,请从 visual studio 编辑配置并在其中添加 dependentAssembly 绑定

对于 VS 2015 使用以下路径

c:\users\[user]\AppData\Local\Microsoft\VisualStudio.0\devenv.exe.config

在 VS 2017 中你需要使用这个路径

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

您需要重启 visual studio