从源代码构建Autofac

时间:2012-12-24 16:53:33

标签: inversion-of-control autofac

如何从源代码构建Autofac?我发现只有一个弃用的维基页面。

我尝试启动go.cmd(.NET Framework 4.0),但失败并出现错误:

    C:\Autofac\Autofac.csproj" (default target) (4) ->
    (CoreCompile target) ->
    Builder\MetadataConfiguration.cs(28,14): error CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?)
    [C:\Autofac\Core\Source\Autofac\Autofac.csproj] Features\LazyDependencies\LazyWithMetadataRegistrationSource.cs(28,14): error CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?) 

我做错了什么?

2 个答案:

答案 0 :(得分:3)

Autofac 3.0已更新,因此核心Autofac.dll是一个针对多个平台的可移植类库。可移植类库没有对系统程序集的引用,因此缺少的System.Core引用是正确的 - 它不应该存在。您应该能够将可移植类库与.NET 4 ...或Windows Store或Windows Phone 8应用程序一起使用。 我强烈建议不要修改.csproj 的引用。您将破坏该兼容性并无意中更改目标配置文件。

从源代码构建的wiki页面已被弃用,因为构建的说明位于源代码根目录中的自述文件中。 (在那个已弃用的维基页面上提到了这一点 - 第一行。)它解释了所需的所有必备工具和命令。如果您按照其中的信息进行操作,则不必修改任何内容即可构建源代码。

如果您不修改源代码,我不确定为什么需要重新构建源代码以专门针对.NET 4。它应该工作。如果您发现某些内容无效,请file an issue about it on the Autofac site

如果你正在修改源代码,那里的自述文件应该让你在不搞乱项目引用的情况下构建。

答案 1 :(得分:1)

看起来Autofac.csproj不包含对system.core的引用。另请参阅this questionthis bugreport。那么你可以尝试将它添加到Autofac.csproj文件中:

<ItemGroup>
    <Reference Include="System.Core" />
</ItemGroup>

您可能还需要添加其他引用,例如System