我正在使用: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
答案 0 :(得分:1)
听起来您将项目从另一台计算机上移开,而您的计算机上没有安装Silverlight Toolkit和WCF 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。