2010-10-26 25 views
5

我使用時解析引用:Silverlight的4.0版,100%F#的解決方案。我從調試切換目標配置到發佈時,有一個問題。一切都彙集在調試模式下細,然後在釋放我得到如下:的Silverlight無法從調試切換到發佈

C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(1360,9): 警告MSB3245 :無法解析此參考 。無法找到 裝配 「System.ComponentModel.DataAnnotations」。 檢查以確保磁盤上的程序集存在 。如果您的代碼需要此參考 ,則可能會收到編譯 錯誤。

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(1360,9): 警告MSB3245:無法解析 此引用。無法找到 裝配 「System.Windows.Controls.Data.Input」。 檢查以確保磁盤上的程序集存在 。如果您的代碼需要此參考 ,則可能會收到編譯 錯誤。

在項目文件lokos項目組想:

<ItemGroup> 
    <Reference Include="FSharp.PowerPack"> 
     <HintPath>C:\Program Files\FSharpPowerPack-2.0.0.0\Silverlight\v3.0\FSharp.PowerPack.dll</HintPath> 
    </Reference> 
    <Reference Include="mscorlib" /> 
    <Reference Include="FSharp.Core"> 
     <HintPath>$(ProgramFiles)\Microsoft F#\Silverlight\Libraries\Client\$(SilverlightVersion)\FSharp.Core.dll</HintPath> 
    </Reference> 
    <Reference Include="System" /> 
    <Reference Include="System.ComponentModel.DataAnnotations" /> 
    <Reference Include="System.Core" /> 
    <Reference Include="System.Net" /> 
    <Reference Include="System.Runtime.Serialization" /> 
    <Reference Include="System.Windows" /> 
    <Reference Include="System.Windows.Browser" /> 
    <Reference Include="System.Windows.Controls"> 
     <HintPath>bin\Debug\System.Windows.Controls.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Windows.Controls.Data"> 
     <HintPath>bin\Debug\System.Windows.Controls.Data.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Windows.Controls.Data.Input" /> 
    <Reference Include="System.Windows.Controls.DataVisualization.Toolkit"> 
     <HintPath>bin\Debug\System.Windows.Controls.DataVisualization.Toolkit.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Windows.Controls.Input"> 
     <HintPath>c:\Program Files\Microsoft SDKs\Silverlight\v4.0\Libraries\Client\System.Windows.Controls.Input.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Windows.Controls.Layout.Toolkit"> 
     <HintPath>bin\Debug\System.Windows.Controls.Layout.Toolkit.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Windows.Controls.Navigation"> 
     <HintPath>bin\Debug\System.Windows.Controls.Navigation.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Windows.Controls.Toolkit"> 
     <HintPath>bin\Debug\System.Windows.Controls.Toolkit.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Windows.Data"> 
     <HintPath>bin\Debug\System.Windows.Data.dll</HintPath> 
    </Reference> 
    <Reference Include="System.Xml" /> 
    </ItemGroup> 

Obviuosly,一些元素有HintPaths而有的則沒有,而一些有hintpaths,似乎有絕對和相對路徑...

有人可以幫我嗎?提前致謝。


行,所以我刪除了引用,然後重新添加他們,他們就到項目文件中的格式:

C:\ Program Files文件\微軟 的SDK \ Silverlight的\ V4。 0 \ Libraries \ Client \ System.ComponentModel.DataAnnotations.dll

這兩個引用。它都編譯 - 在兩個版本中。 HintPaths上的任何提示?他們如何使用以及如何和何時生成它們?爲什麼當我試圖手動修改proj文件時,它似乎並不重要(即使VS告訴我它重新加載,仍然沒有編譯)?

THX

+0

關於HintPaths,看看這個問題:http://stackoverflow.com/questions/1882038/hintpath-vs-referencepath-in-visual-studio – herzmeister 2010-10-26 20:58:45

回答

1

聽起來像是你感動從另一臺機器的項目,並在計算機上安裝的Silverlight ToolkitWCF RIA Services你沒有。

清潔解決方案,關閉您的Visual Studio和安裝缺少了什麼。

+0

還是安裝在同一個地方?我們正在一小羣開發人員之間工作,我跳入重構他們的代碼,並分發到許多較小的項目中。啊。 – akaphenom 2010-10-26 20:49:08

+0

是的,建議您爲所有團隊成員正確安裝所有設備並安裝在同一地點。如果找不到某些東西,Visual Studio將在項目尚未清理之前將其從調試或發佈文件夾中鏈接。所以事情遲早會變得相當混亂...... – herzmeister 2010-10-26 21:02:31

+0

當你在一個相對較大的開發者羣體中時,我通常通過將核心Silverlight外部的庫添加到源代碼管理中的「LIB」文件夾中來避免此問題並確保項目中的所有引用都指向那些程序集而不是已安裝的程序集。這樣,我甚至可以使用不同版本的庫的幾個項目,無論我在計算機中安裝了哪些版本,或者即使我沒有。 – Murven 2010-10-27 05:56:46

1

僅供參考,有在運Microsoft.FSharp.targets可能與此互動的錯誤。您可以加入這一行

<FrameworkRegistryBase Condition="'$(TargetFrameworkIdentifier)'=='Silverlight'">Software\Microsoft\Microsoft SDKs\$(TargetFrameworkIdentifier)</FrameworkRegistryBase> 

一個<PropertyGroup>(略低於<Tailcalls>元素是一個很好的點)內內Microsoft.FSharp.targets修復它。我不知道這是否與你的問題有關(聽起來可能不會),但只是單純的提醒。

(你得到的事實HintPath(即使你做正確的事情),也可能是在F#項目系統的一個錯誤的結果。)

一個可能的策略,如果你需要一個解決方法是檢查在需要在源代碼控制下的固定位置(相對於您的項目)中引用的DLL副本中,然後通過「固定」相對路徑引用這些DLL。

+0

Brian - 您是否碰巧知道計劃要在項目系統中修復這些錯誤(錯誤發佈修復)? Thx – akaphenom 2010-11-18 22:13:21

+0

由於F#項目系統是VS2010的一個集成部分,因此修補程序最終將帶有VS位(例如,在將來的Service Pack或將來的VS版本中)。 – Brian 2010-11-18 22:49:14

相關問題