Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 直接引用Razor类库程序集_C#_Asp.net Mvc_Razor_Razor Pages_Razor Class Library - Fatal编程技术网

C# 直接引用Razor类库程序集

C# 直接引用Razor类库程序集,c#,asp.net-mvc,razor,razor-pages,razor-class-library,C#,Asp.net Mvc,Razor,Razor Pages,Razor Class Library,我正在开发一个web应用程序,需要从其他项目填充页面。我希望使用Razor类库(RCL)来实现这一点。 文件指出。我希望这只是一条捷径,可以确保开发人员按照推荐的方式进行开发。不幸的是,如果我直接引用我的RCL项目中生成的两个程序集(MyProject.dll和MyProject.Views.dll),它将无法工作。仅当我向RCL项目添加项目引用时,它才起作用 我工作的公司有一个定制的构建管道,由于我无法控制的原因,我只能直接引用程序集 当使用直接引用和项目引用时,我花了一些时间比较编译的输出,

我正在开发一个web应用程序,需要从其他项目填充页面。我希望使用Razor类库(RCL)来实现这一点。 文件指出。我希望这只是一条捷径,可以确保开发人员按照推荐的方式进行开发。不幸的是,如果我直接引用我的RCL项目中生成的两个程序集(
MyProject.dll
MyProject.Views.dll
),它将无法工作。仅当我向RCL项目添加项目引用时,它才起作用

我工作的公司有一个定制的构建管道,由于我无法控制的原因,我只能直接引用程序集

当使用直接引用和项目引用时,我花了一些时间比较编译的输出,但是我没有发现区别有人知道为什么直接引用对RCL不起作用吗?如果我了解区别,我应该能够从那里开始工作


作为奖励,有人知道解决方法吗?创建
CompiledRazorAssemblyPart
是可行的(如中所述),但我不想手动搜索程序集。

在启动时将代码放在下面。cs

var assemblies = new string[] { "APP.Plugins.Test" };

        services
           .AddMvc()
           .ConfigureApplicationPartManager(apm =>
           {

               foreach (var assemblyFile in assemblies)
               {

                   //main assembly
                   var assembly = Assembly.Load(assemblyFile);
                   apm.ApplicationParts.Add(new AssemblyPart(assembly));

                   //view assembly
                   var assemblyView = Assembly.Load(assemblyFile+".Views");
                   apm.ApplicationParts.Add(new CompiledRazorAssemblyPart(assemblyView));                     
               }
           });

在Startup.cs上输入以下代码

var assemblies = new string[] { "APP.Plugins.Test" };

        services
           .AddMvc()
           .ConfigureApplicationPartManager(apm =>
           {

               foreach (var assemblyFile in assemblies)
               {

                   //main assembly
                   var assembly = Assembly.Load(assemblyFile);
                   apm.ApplicationParts.Add(new AssemblyPart(assembly));

                   //view assembly
                   var assemblyView = Assembly.Load(assemblyFile+".Views");
                   apm.ApplicationParts.Add(new CompiledRazorAssemblyPart(assemblyView));                     
               }
           });