0
我創建了T4模板並決定創建一些幫助程序類來清除模板代碼。我在我的幫助類的解決方案中創建了一個新的類項目,在模板中引用了程序集並導入了名稱空間。T4模板在導入程序集上失敗並導致MissingMethodException
下面是一個例子:
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="Microsoft.SqlServer.ConnectionInfo" #>
<#@ assembly name="Microsoft.SqlServer.Smo" #>
<#@ assembly name="Microsoft.SqlServer.SmoExtended" #>
<#@ assembly name="$(SolutionDir)\MySolution.SqlMetaHelper\bin\Debug\MySolution.SqlMetaHelper .dll" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="Microsoft.SqlServer.Management.Common" #>
<#@ import namespace="Microsoft.SqlServer.Management.Smo" #>
<#@ import namespace="MySolution.SqlMetaHelper" #>
<#@ output extension=".txt" #>
<#
string @namespace = "MySolution.Data";
ServerConnection connection = new ServerConnection("localhost", "sa", "password");
Server server = new Server(connection);
Database database = server.Databases["MySolution"];
#>
namespace <#= @namespace #>
{
<#
foreach (Table table in database.Tables)
{
#>
public interface I<#= table.Name #>
{
//Properties
<#
foreach (ColumnMeta column in table.Columns.Cast<Column>().Select(c => new ColumnMeta(c)))
{
#>
//<#=column.Name#>
<#
}
#>
}
<#
}
#>
}
模板執行失敗並返回此錯誤:
Severity Code Description Project File Line Suppression State
Error Running transformation: System.MissingMethodException: Method not found: 'Void MySolution.SqlMetaHelper.ColumnMeta..ctor(Microsoft.SqlServer.Management.Smo.Column)'.
at Microsoft.VisualStudio.TextTemplatingE69FE551E9A42AE5D542A4EC2CDCECEDBDBC96F903EFDB8864E380652948850C270A5AC8C04E0B0F9368C0530BF3447DEAFC3716CC5CE03ABD37589675749A74.GeneratedTextTransformation.<>c.<TransformText>b__0_0(Column c)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at Microsoft.VisualStudio.TextTemplatingE69FE551E9A42AE5D542A4EC2CDCECEDBDBC96F903EFDB8864E380652948850C270A5AC8C04E0B0F9368C0530BF3447DEAFC3716CC5CE03ABD37589675749A74.GeneratedTextTransformation.TransformText() MySolution.Data C:\Users\me\documents\visual studio 2015\Projects\MySolution\MySolution.Data\Entities.tt 1
我曾嘗試沒有成功很多事情,我無法找到我的情況匹配任何內容在網上。我有一種感覺,它與「Microsoft.SqlServer。」的引用有關。程序集,因爲它們被模板和外部庫引用,也許是不同的版本,但我不知道我會如何解決這個問題。有任何想法嗎?