【问题标题】:C# T4 using assemblybinding / bindingRedirect from web.configC# T4 使用来自 web.config 的 assemblybinding / bindingRedirect
【发布时间】:2017-08-11 06:40:38
【问题描述】:

我在我的 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 模板是否用作某些 ORM(EF 或其他东西)的一部分?

标签: c# .net-assembly t4


【解决方案1】:

问题是,T4 模板没有使用项目内的 web.config,T4 模板在 Visual Studio 的上下文中运行并使用 Visual Studio 的配置。

解决问题的方法是从 Visual Studio 编辑配置并在其中添加dependentAssembly 绑定

对于 VS 2015,使用以下路径

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

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

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

您需要重新启动 Visual Studio

【讨论】:

  • 哇,我不敢相信他们没有让 T4 模板使用来自当前项目的重定向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多