我創建了一個帶有擴展方法的類庫,用於處理EnvDTE
對象。一個例子擴展方法是:使用T4中單獨類庫中的擴展方法
namespace EnvDTE.Extensions
{
public static class DTEExtensions
{
public static Project CurrentProject (this DTE dte)
{
return dte.ActiveDocument.ProjectItem.ContainingProject;
}
}
}
,當我嘗試使用擴展方法在我的T4文件:
<#@ template debug="false" hostspecific="true" language="C#" #>
<#@ assembly name="EnvDTE" #>
<#@ assembly name = "$(SolutionDir)..\..\Windows\EnvDTE.Extensions\EnvDTE.Extensions\bin\Debug\EnvDTE.Extensions.dll" #>
<#@ assembly name = "System.Core" #>
<#@ import namespace="EnvDTE" #>
<#@ import namespace="EnvDTE.Extensions" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ output extension=".cs" #>
<#
var serviceProvider = (IServiceProvider)this.Host;
var dte = serviceProvider.GetService(typeof(DTE)) as DTE;
var project = dte.CurrentProject();
#>
namespace <#= project.Properties.Item("DefaultNamespace").Value #>
{
}
我得到以下異常:
Severity Code Description Project File Line
Error Running transformation: System.Runtime.Remoting.RemotingException: Cannot load type 'EnvDTE._DTE, EnvDTE.Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Server stack trace:
at System.Runtime.Remoting.Messaging.MethodCall.ResolveMethod(Boolean bThrowIfNotResolved)
at System.Runtime.Remoting.Messaging.MethodCall..ctor(SmuggledMethodCallMessage smuggledMsg, ArrayList deserializedArgs)
at System.Runtime.Remoting.Channels.CrossAppDomainSink.DoDispatch(Byte[] reqStmBuff, SmuggledMethodCallMessage smuggledMcm, SmuggledMethodReturnMessage& smuggledMrm)
at System.Runtime.Remoting.Channels.CrossAppDomainSink.DoTransitionDispatchCallback(Object[] args)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at EnvDTE._DTE.get_ActiveDocument()
at EnvDTE.Extensions.DTEExtensions.CurrentProject(DTE dte) in D:\Users\Adaptive\Projects\Windows\EnvDTE.Extensions\EnvDTE.Extensions\DTEExtensions.cs:line 13
at Microsoft.VisualStudio.TextTemplating0BE14095FFF8852C1DA8AAA0F831675849ECBB71E2A8B8BA2027BD64107CEDE73824E8CF863A0048B6B5FF80E64944B13E838B3338BD67CA7B6A2CF9BB4BD07C.GeneratedTextTransformation.TransformText() TicketTracker D:\Users\Adaptive\Projects\Universal\TicketTracker\TicketTracker\Models\HoursModel.tt 1
任何想法,我在這裏做錯了嗎?看來轉換引擎正在尋找錯誤庫中的類型。我知道我可以通過導入各種T4文件來創建我的擴展方法的集合,但是如果可以使其工作,我更喜歡一個類庫。
如果這解決了您的問題,請將此答案標記爲已接受,以幫助其他人快速找到正確的答案 –