【问题标题】:Building Autofac from sources从源代码构建 Autofac
【发布时间】:2012-12-11 00:36:15
【问题描述】:

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

我尝试启动 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?) 

我做错了什么?

【问题讨论】:

    标签: inversion-of-control autofac


    【解决方案1】:

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

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

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

    如果您正在修改源代码,其中的自述文件应该可以让您在构建时不会弄乱项目引用。

    【讨论】:

    • 谢谢特拉维斯。我的原因如下:当我使用 Nuget 包(.net40 文件夹)中的 Autofac.dll 时,它引用了 mscorlib ver。 2,但期待看到版本。 4代替。 dotPeak 证实了这一点。这是为什么呢?
    • 这是可移植类库机制的一部分。除非它引起问题,否则请忽略它。您应该能够使用已发货的内容。如果它不能正常工作,真的,请提出问题,因为我们希望在最终的 3.0 发布之前修复它。 (如果有问题,请提交问题,而不是将其留在 cmets 中。问题得到处理;此处的 cmets 可能会被忽略。)
    • 如果您不熟悉 Portable Class Libraries(VS 2012 中的新功能),MSDN 上有很多文档。
    • 使用包中的 Autofac 3 beta 2 并不会真正导致任何问题。但是我在编译过程中出现警告,ReSharper (7.1.1) 无法识别模块块并显示有关使用 mscorlib 的错误,系统两者都有。 2 和版本。 4. 但这可能是 PCL 的问题。
    • 听起来像 PCL。我会就此提出一个不同的问题,并将其发送给 PCL 开发人员之一的@davkean。
    【解决方案2】:

    看起来Autofac.csproj 不包含对 system.core 的引用。另见this questionthis bugreport。那么您可以尝试将其添加到 Autofac.csproj 文件中吗:

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

    您可能还必须添加其他引用,例如System

    【讨论】:

    猜你喜欢
    • 2013-06-01
    • 2015-08-20
    • 2011-09-05
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多