2012-12-24 231 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上。 –