gpt4 book ai didi

c# - T4 模板和 Assembly.Load

转载 作者:太空狗 更新时间:2023-10-29 21:58:48 26 4
gpt4 key购买 nike

这是我在 StackOverflow 上的第一个问题,大家好 :)

是否可以在 t4 模板中使用 Assembly.Load() 按程序集名称加载程序集?我想用它来获取加载程序集中具有 ServiceContract 属性的所有类型。

    var loadedAssembly = Assembly.Load(assemblyName);
var types = from type in loadedAssembly.GetTypes()
where Attribute.IsDefined(type, typeof(ServiceContractAttribute))select type;

在我的模板所在的项目中引用了所需的程序集。我想通了

    <#@ assembly name="$(TargetDir)\DesiredAssemblyName.dll" #>
var loadedAssembly = Assembly.GetAssembly(typeof(SomeType));

有效,但它似乎不是好的解决方案。此外,我希望该模板在构建后以及将以下行添加到 .csproj 时进行转换

      <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\
TextTemplating\v10.0\Microsoft.TextTemplating.targets"/>
<PropertyGroup>
<TransformOnBuild>true</TransformOnBuild>
</PropertyGroup>
<ItemGroup>
<!--Add VS\...\PublicAssemblies to the list of places
to look for assemblies used by templates.-->
<T4ReferencePath Include="..\Onii.Vespa.AppServer\"/>
</ItemGroup>

使用 Assembly.GetAssembly 的解决方案也不起作用。感谢您的所有建议。

最佳答案

您是否尝试将程序集加载到仅反射上下文?

关于c# - T4 模板和 Assembly.Load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12001540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com