在运行时找不到引用的.Net程序集

时间:2016-05-30 01:09:47

标签: asp.net-core-mvc dnx

这是场景。 我创建了一个全新的Asp.Net DNX RC2 Final项目。我还在我的解决方案中添加了一个.Net类库项目(均在FX 4.6.1下)。类库项目位于src文件夹中。

然后,我添加了对类库的引用,它可以在更改project.json文件后成功恢复所有包。

我在我的类库中添加了一个简单的foo函数

from ipaddress import IPv4Network

network = IPv4Network('10.220.1.0/24')
reserved = {'10.220.1.1', '10.220.1.2', '10.220.1.3', '10.220.1.5'}

hosts_iterator = (host for host in network.hosts() if str(host) not in reserved)

# Using hosts_iterator:
print(next(hosts_iterator))  # prints 10.220.1.4
print(next(hosts_iterator))  # prints 10.220.1.6
print(next(hosts_iterator))  # prints 10.220.1.7

# Or you can iterate over hosts_iterator:
for host in hosts_iterator:
    print(host)

最后在我的主页/索引视图中,我在顶部添加了以下内容

namespace ClassLibrary1
{
    public class Class1
    {
        public static string Foo()
        {
            return "Bar";
        }
    }
}

解决方案编译时没有错误。 你可能认为这么好,让我们继续。

然后,当我运行解决方案时,显示以下内容:

enter image description here

在运行时,我的类库不可用。

1 个答案:

答案 0 :(得分:1)

我遇到了类似的情况。在我的情况下,我在Visual Studio中得到了一个RazorEngine异常,它至少让我知道发生了什么(这就像缺少引用异常,即使类库被添加为参考)。

我能让它工作的唯一方法(我希望有更好的方法)是将以下代码添加到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

Configure RazorViewEngine

当我添加上述代码时,我确实确认您的示例正常工作。