2012-12-24 267 views
2

如何从源代码构建Autofac?我发现只有一个被弃用的wiki页面。从源代码构建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?) 

我做错了吗?

回答

1

看起来像Autofac.csproj不包含对system.core的引用。另见this questionthis bugreport。所以,你可以尝试把它添加到Autofac.csproj文件:

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

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

+0

谢谢!有用。我只想重建Autofac for .NET 4.从NuGet包https://nuget.org/packages/Autofac/3.0.0-beta2使用它时,我有mscorlib 2警告。 – asa

3

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

从源代码构建的wiki页面已被弃用,因为构建指令位于源代码根目录的自述文件中。 (在不赞成使用的wiki页面上提到了这一点 - 第一行)。它解释了所需的所有必备工具和命令。如果你按照那里的信息,你不应该修改任何东西来获得源代码。

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

如果您正在修改源代码,那么其中的自述文件应该可以帮助您构建而不会混淆项目引用。

+0

谢谢特拉维斯。我的理由是:当我使用Nuget包(.net40文件夹)中的Autofac.dll时,它具有对mscorlib ver的引用。 2,但期望看到版本。 4代替。 dotPeak证实了它。这是为什么? – asa

+0

这是可移植类库机制的一部分。忽略它,除非它引起问题。你应该可以使用发货。如果它不能正常运行,请真正地提交问题,因为我们希望在最终的3.0版本之前修复它。 (如果出现问题,请提交问题,而不是仅仅留下评论;问题得到处理;这里的评论可能会被忽略) –

+0

如果您不熟悉可移植类库(VS 2012中的新增内容),则会有大量文档在MSDN上。 –