代码之家  ›  专栏  ›  技术社区  ›  akaphenom

从调试切换到发布时,Silverlight无法解析引用

  •  5
  • akaphenom  · 技术社区  · 15 年前

    我正在使用:Silverlight 4.0版,100%f解决方案。从切换目标配置时出现问题 调试 释放 . 在调试模式下,一切都编译良好,然后在发行版中,我得到以下信息:

    C:\windows\microsoft.net\framework\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”(系统.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>
    

    显然,有些元素有暗示,而其他元素没有,而有些元素有暗示,但似乎有绝对和相对路径…

    有人能帮我吗?事先谢谢。


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

    C:\程序文件\Microsoft sdks\silverlight\v4.0\libraries\client\system.componentmodel.dataannotations.dll

    对于这两个参考文献。这两个版本都可以编译。有什么暗示吗?它们是如何使用的,以及它们是如何以及何时生成的?为什么当我试图手工修改proj文件时,它似乎并不重要(尽管vs告诉我重新加载了它,但仍然没有编译)?

    谢谢

    2 回复  |  直到 15 年前
        1
  •  1
  •   herzmeister    15 年前

    听起来像是你从另一台机器上移动了项目,但是你没有 Silverlight Toolkit 以及 WCF RIA Services 安装在您的计算机上。

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

        2
  •  1
  •   Brian    15 年前

    仅供参考,随附的microsoft.fsharp.targets中存在可能与此交互的错误。您可以添加此行

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

    A内 <PropertyGroup> (就在 <Tailcalls> 元素是一个很好的位置)在microsoft.fsharp.targets中修复它。我不知道这是否与你的问题有关(听起来可能不是),但只是一个提醒以防万一。

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

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