在运行时未找到引用的 .Net 程序集
Referenced .Net assembly not found at runtime
场景如下。
我创建了一个全新的 Asp.Net DNX RC2 Final 项目。我还在我的解决方案中添加了一个 .Net class 库项目(均在 FX 4.6.1 下)。 class 库项目位于 src 文件夹中。
然后,我添加对class库的引用,它可以在对project.json文件进行更改后成功恢复所有包。
我在我的 class 库中添加了一个简单的 foo 函数
namespace ClassLibrary1
{
public class Class1
{
public static string Foo()
{
return "Bar";
}
}
}
最后在我的 Home/Index 视图中,我在顶部添加了以下内容
<div>
@(ClassLibrary1.Class1.Foo())
</div>
解决方案编译没有错误。
你可能觉得到目前为止还不错,让我们继续。
然后,当我运行解决方案时,显示如下:
在 运行 时,我的 class 库不可用。
我运行陷入了类似的境地。在我的例子中,我在 Visual Studio 中遇到了一个 RazorEngine 异常,它至少让我知道了发生了什么(这有点像缺少引用异常,即使 class 库被添加为引用).
我让它工作的唯一方法(我希望有更好的方法)是将以下代码添加到 Startup.cs 中的 ConfigureServices 方法中:
services.Configure<RazorViewEngineOptions>(options =>
{
var previous = options.CompilationCallback;
options.CompilationCallback = (context) =>
{
previous?.Invoke(context);
context.Compilation = context.Compilation.AddReferences(MetadataReference.CreateFromFile(typeof(ClassLibrary1.Class1).Assembly.Location));
};
});
我的想法来自以下网站:
Callback on RazorViewEngineOptions
当我添加上面提到的代码时,我确认你的例子是有效的。
场景如下。 我创建了一个全新的 Asp.Net DNX RC2 Final 项目。我还在我的解决方案中添加了一个 .Net class 库项目(均在 FX 4.6.1 下)。 class 库项目位于 src 文件夹中。
然后,我添加对class库的引用,它可以在对project.json文件进行更改后成功恢复所有包。
我在我的 class 库中添加了一个简单的 foo 函数
namespace ClassLibrary1
{
public class Class1
{
public static string Foo()
{
return "Bar";
}
}
}
最后在我的 Home/Index 视图中,我在顶部添加了以下内容
<div>
@(ClassLibrary1.Class1.Foo())
</div>
解决方案编译没有错误。 你可能觉得到目前为止还不错,让我们继续。
然后,当我运行解决方案时,显示如下:
在 运行 时,我的 class 库不可用。
我运行陷入了类似的境地。在我的例子中,我在 Visual Studio 中遇到了一个 RazorEngine 异常,它至少让我知道了发生了什么(这有点像缺少引用异常,即使 class 库被添加为引用).
我让它工作的唯一方法(我希望有更好的方法)是将以下代码添加到 Startup.cs 中的 ConfigureServices 方法中:
services.Configure<RazorViewEngineOptions>(options =>
{
var previous = options.CompilationCallback;
options.CompilationCallback = (context) =>
{
previous?.Invoke(context);
context.Compilation = context.Compilation.AddReferences(MetadataReference.CreateFromFile(typeof(ClassLibrary1.Class1).Assembly.Location));
};
});
我的想法来自以下网站:
Callback on RazorViewEngineOptions
当我添加上面提到的代码时,我确认你的例子是有效的。