我需要在包含 Visual Studio T4 模板的项目所引用的程序集中引用一种类型(Type)。但是,被引用的程序集是通过 NuGet 包进行安装的。随着 Nuget 引用的更新,NuGet 会将其放置在解决方案的 packages 文件夹中,因此路径也会发生变化。例如,假设我的 NuGet 包是:
Facade.Contract.1.0.1-alpha
那么,从我的项目到它的相对路径是:
..\packages\Facade.Contract.1.0.1-alpha\lib\net4\Facade.Contract.dll
如果预发布版本升级为 beta 版,则该路径将更改。当包发布时,路径也会更改。每次路径更改时,*.tt 文件中的程序集行也会过时:
<#@ assembly name="..\packages\Facade.Contract.1.0.1-alpha\lib\net4\Facade.Contract.dll" #>
我认为没有直接使用程序集指令完成这个任务的方法;然而,我开放接受一些疯狂的想法。我可以把程序集自己加载进当前或下属或仅反射的 AppDomain 中吗?
我想我可以,但我不确定如何使用 T4 逻辑动态地发现项目引用中所引用程序集的路径。
有什么想法吗?
Facade.Contract.1.0.1-alpha
那么,从我的项目到它的相对路径是:
..\packages\Facade.Contract.1.0.1-alpha\lib\net4\Facade.Contract.dll
如果预发布版本升级为 beta 版,则该路径将更改。当包发布时,路径也会更改。每次路径更改时,*.tt 文件中的程序集行也会过时:
<#@ assembly name="..\packages\Facade.Contract.1.0.1-alpha\lib\net4\Facade.Contract.dll" #>
我认为没有直接使用程序集指令完成这个任务的方法;然而,我开放接受一些疯狂的想法。我可以把程序集自己加载进当前或下属或仅反射的 AppDomain 中吗?
我想我可以,但我不确定如何使用 T4 逻辑动态地发现项目引用中所引用程序集的路径。
有什么想法吗?