从Debug切换到Release时,Silverlight无法解析引用

时间:2010-10-26 20:37:07

标签: silverlight silverlight-4.0 f#

我正在使用:Silverlight版本4.0,100%F#解决方案。将目标配置从调试切换到发布时出现问题。一切都在调试模式下编译好,然后在发布中我得到以下内容:

  

C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(1360,9):   警告MSB3245:无法解决   这个参考。无法找到   部件   “System.ComponentModel.DataAnnotations”。   检查以确保装配存在   在磁盘上。如果需要此引用   通过您的代码,您可以获得编译   错误。

     

C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common.targets(1360,9):   警告MSB3245:无法解决   这个参考。无法找到   部件   “System.Windows.Controls.Data.Input”。   检查以确保装配存在   在磁盘上。如果需要此引用   通过您的代码,您可以获得编译   错误。

项目文件中的项目组如:

  <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>

显然有些元素有HintPaths,有些则没有,有些有hintpaths,似乎有绝对和相对路径...

有人可以帮帮我吗?提前谢谢。


好的,所以我删除了引用然后重新读取它们,它们以下列格式进入项目文件:

  

  c:\ Program Files \ Microsoft   软件开发工具包\ Silverlight的\ V4.0 \图书馆\客户端\ System.ComponentModel.DataAnnotations.dll   

两个参考文献。它都编译 - 在两个版本中。 HintPaths的任何暗示?如何使用它们以及如何以及何时生成它们?为什么当我试图手动修改proj文件时它似乎并不重要(即使VS告诉我重新加载仍然没有编译)?

THX

2 个答案:

答案 0 :(得分:1)

听起来您将项目从另一台计算机上移开,而您的计算机上没有安装Silverlight ToolkitWCF RIA Services

清理解决方案,关闭Visual Studio并安装缺少的内容。

答案 1 :(得分:1)

仅供参考,运送的Microsoft.FSharp.targets中存在可能与此进行交互的错误。您可以添加此行

    <FrameworkRegistryBase Condition="'$(TargetFrameworkIdentifier)'=='Silverlight'">Software\Microsoft\Microsoft SDKs\$(TargetFrameworkIdentifier)</FrameworkRegistryBase>
在Microsoft.FSharp.targets中的<PropertyGroup>内部(就在<Tailcalls>元素正下方是一个很好的位置)来修复它。我不知道这是否与您的问题有关(听起来可能不是这样),但只是提醒一下。

(你获得HintPath的事实(即使你做对了)也可能是F#项目系统中的一个错误的结果。)

如果需要解决方法,一种可能的策略是在源代码管理下检查需要在固定位置(相对于项目)引用的DLL副本,然后通过“固定”相对路径引用这些DLL。