在加载 Microsoft.AspNet.WebApi.Client System.Net.Http.Formatting.dll 时尝试为 T4 文件查找 "missing dependency"

Trying to find "missing dependency" for T4 file when loading Microsoft.AspNet.WebApi.Client System.Net.Http.Formatting.dll

我正在使用 Tangible Engineering 的 "T4 Editor",虽然仍有一些缺陷,但它是一个非常好的 T4 编辑器,并且在配置使用 WebApi 客户端的 T4 模板时,它继续显示以下消息:

"$(SolutionDir)packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll could not be loaded. There was an exception during load: A dependency could not be found!"

我已经搜索了包的 NuGet 存储库条目,跟踪了所有 "Dependencies" 链接,通过问题条目之前的 "assembly" 条目添加了相应的程序集,但我继续收到错误。从下面的代码中可以看出,除了厨房水槽外,我把所有东西都扔进去了,但无济于事。这里的一点指导会有很长的路要走。 我的环境是 Visual Studio 2013 Premium、ReSharper、PowerTools,当然还有 Tangible 的 T4 编辑器(可以为那些想尝试并复制错误的人下载免费版本,不,我不会为他们工作,我也不会因为推荐它而从他们那里得到报酬——我只是喜欢它)。 以下是模板:

<#@ template debug="true" hostSpecific="true" language="C#" #>
<#@ CleanupBehavior Processor="T4VSHost" CleanupAfterProcessingTemplate="true" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="System.Xml.Linq"#>
<#@ assembly name="System.Configuration" #>
<#@ assembly name="EnvDTE"#>
<#@ import namespace="System" #>
<#@ import namespace="System.Data"#>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Xml.Linq" #>
<#@ import namespace="System.Globalization" #>
<#@ import namespace="System.Reflection" #>
<#@ import namespace="System.CodeDom" #>
<#@ import namespace="System.CodeDom.Compiler" #>
<#@ import namespace="Microsoft.CSharp"#>
<#@ import namespace="System.Text"#>
<#@ import namespace="System.Configuration" #>
<#@ output extension=".generated.cs" #>
<#@ assembly name="System.Threading" #>
<#@ import namespace="System.Threading" #>
<#@ import namespace="System.Threading.Tasks" #>
<#@ assembly name="System.Collections" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ assembly name="System.Runtime.Serialization"#>
<#@ assembly name="$(SolutionDir)packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll" #>
<#@ assembly name="$(SolutionDir)packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.Tasks.dll"#>
<#@ assembly name="$(SolutionDir)packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Extensions.dll"#>
<#@ assembly name="$(SolutionDir)packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Primitives.dll"#>
<#@ assembly name="$(SolutionDir)packages\Microsoft.Net.Http.2.2.29\lib\net45\System.Net.Http.Extensions.dll"#>
<#@ assembly name="$(SolutionDir)packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll" #>
<#@ assembly name="C:\AoCTools\AoCFramework\AoC.AoCTools.T4CodeGenerationCmn.dll" #>
<#@ assembly name="C:\AoCTools\AoCFramework\AoC.AoCTools.T4CodeGeneration.dll" #>
<#@ import namespace="AoC.AoCTools.T4CodeGeneration" #>
<#@ import namespace="AoC.AoCTools.T4CodeGenerationCmn" #>

以为我会在这里抛出一个相对适用的答案。事实证明,在尝试从 GAC 获取包时,T4 小工具有点疏忽。它会很好地获取标准的 GAC 内容,但是找不到提供的一些扩展。

如果那些 "missing" 的包只是复制到正在查找其他所有内容的目录中(来自您自己的库的独特包,具有其他依赖项的第三方库等)并包括一切,"error" 应该消失。并不是说这是确定的答案,但在某些情况下会有所帮助。