【问题标题】:Building Portable Class Library Project in build server fails在构建服务器中构建可移植类库项目失败
【发布时间】:2013-12-29 09:12:50
【问题描述】:

我最近将一些自定义可移植类库项目添加到构建服务器中构建的应用程序中。构建工作正常,但之后它停止工作并向我显示以下消息:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(983, 5): 警告 MSB3644: 框架的参考程序集 未找到“.NETPortable,Version=v4.0,Profile=Profile136”。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets(1578, 5):警告MSB3270:处理器之间存在不匹配 正在构建的项目架构“MSIL”和处理器 参考架构 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll", “AMD64”。

错误 CS0234:类型或命名空间名称“Linq”不存在于 命名空间“系统”(您是否缺少程序集引用?)

构建服务器规格:

解决方案是 .NET 4.0 应用程序,可移植项目仅针对 .NET4.0+ e Silverlight 5。

我检查了我的开发机器(Windows 8、Visual Studio 2012)。确实有一个文件夹“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile136”(事实上,.NET 4.0 的配置文件高达 158 个)。 然而,在构建机器中,只有最多 131 个配置文件的文件夹。

可移植类库工具是最新的吗?它似乎错过了为最新平台安装配置文件。

更新

我将我的开发机器的“.NETPortable\v4.0\Profile\Profile136”复制到构建服务器,现在应用程序构建成功。我仍然想知道为什么安装便携式类库工具不能开箱即用。

【问题讨论】:

    标签: c# .net silverlight teamcity portable-class-library


    【解决方案1】:

    更通用和优雅的解决方案是安装最新的 Microsoft .NET 便携式库参考程序集。这将安装 profile138 等。

    可以在以下位置找到独立安装程序:

    【讨论】:

    • 是的,我看到 Microsoft 已发布更新的 PCL 程序集安装程序。那是我一直在寻找的,但在我设置构建机器时它不可用。
    • 如何找到最新版本的 PCL? Microsoft 是否有一个页面,我们可以在其中找到可在构建服务器上安装的最新 PCL?
    • 请注意,安装程序实际上并未安装文件,而是将 ZIP 文件放在主硬盘驱动器之外的某个位置(可能是 C:\Program Files (x86)\Microsoft .NET Portable Library Reference Assemblies 4.6)。您必须解压缩文件,然后将其复制到服务器上的正确位置。对我来说,这是:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable。实用提示,要创建文件夹,请将其命名为 .NETPortable.,并在末尾加上句点 - Windows 将删除结束句点并允许您创建文件夹。
    • @Cody 工作!但我最终还是从我的开发机器上复制了它,而不是那个下载。我必须补充:我检查了更多目标:.NET 4.5、Windows 8、ASP.NET Core 1.0、Windows phone 和一些 Xamarin 的东西。我只将 .NETPortable 和 .NETCore 复制到构建服务器。以下是一些额外的下载链接:microsoft.com/net/targeting
    • @Cody 是这里真正的 MVP。我已经安装了该死的 4.6 更新一百次,它从来没有在那个 .NETPortable 路径中放入任何东西。 Wtf 必须解压缩到该目录是不是很疯狂?这甚至在任何地方都有记录吗?
    【解决方案2】:

    在安装Portable Class Library Tools 后,将所需的配置文件(在错误消息中明确显示)从开发机器复制到构建服务器,让我的构建工作。

    显然,现在的可移植类库不包括最新的可移植配置文件。

    如果有人知道在构建服务器上获取可移植配置文件的最新方法,而不是安装 VS 或手动复制它们,我真的很想知道。

    更新

    在我的开发机器上,要复制到服务器机器上的文件夹的路径(服务器中的路径相同):

    C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETPortable\v4.0\Profile\Profile136
    

    【讨论】:

    • 如果您知道我们如何手动复制它们,请告诉我们
    • @RaduSimionescu,请参阅更新后的答案。安装可移植类库工具后,只需复制整个文件夹
    • 我的问题是在 Mac 上复制 Xamarin 安装的配置文件 - 我找不到它们。无论如何,我解决了它并用我的解决方案发布了答案。感谢更新
    【解决方案3】:

    Profile136 附带便携式库目标包版本,它是 Phone SDK 8.0(或 VS 2012 的更高版本 VS 更新)的一部分。您使用的目标包版本较旧。

    【讨论】:

    • 我的开发机器有 VS 2012 Update 3 并且可以很好地构建应用程序。正如我所说,我的开发机器提供的可移植配置文件比可移植类库工具安装的要多。因此,我的应用使用的目标包似乎比可移植类库工具的可用版本更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多