我可以获得一个“有时可移植”的类库项目来加载到 Visual Studio Express 中吗?

2024-04-21

For 野田时间 http://noda-time.googlecode.com版本 1.1 的主要目标是构建可移植类库风格,主要是为了支持 Windows Phone 和 Windows Store 应用程序。这意味着失去一些功能,因此我们构建了桌面配置和 PCL 配置(针对每个调试、发布和“签名发布”)。

为了避免使用无数的项目文件,所有 6 个配置都存在于同一个项目文件中。这项目文件 https://code.google.com/p/noda-time/source/browse/src/NodaTime/NodaTime.csproj被定制以生成一个名为“Portability”的属性,该属性设置为“PCL”或“Desktop”,如下所示:

<!-- Set the custom Portability property based on configuration -->
<PropertyGroup>
  <Portability Condition="'$(Configuration)' == 'Debug Portable'">PCL</Portability>
  <Portability Condition="'$(Configuration)' == 'Release Portable'">PCL</Portability>
  <Portability Condition="'$(Configuration)' == 'Signed Release Portable'">PCL</Portability>
  <!-- Default to desktop if not explicitly set above -->
  <Portability Condition="'$(Portability)' == ''">Desktop</Portability>
</PropertyGroup>

然后,根据上述属性,我们为便携式和台式机提供单独的属性组。这就是将项目类型定义为“类库”或“可移植类库”(以及OutputType of Library,这是共享的):

<!-- Desktop-specific properties -->
<PropertyGroup Condition="'$(Portability)' == 'Desktop'">
  <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  <TargetFrameworkProfile>Client</TargetFrameworkProfile>
</PropertyGroup>

<!-- PCL-specific properties -->
<PropertyGroup Condition="'$(Portability)' == 'PCL'">
  <MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>
  <ProjectGuid>{c78f6992-28d7-45c9-a4c1-6eaa649f3247}</ProjectGuid>
  <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  <TargetFrameworkProfile>Profile2</TargetFrameworkProfile>
  <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>

这通常工作得很好 - 我有不同的解决方案配置,因此我可以立即构建和测试所有内容,并且我只需要添加每个新的.cs文件到单个项目文件。因此,在 Visual Studio 2012 Professional(我使用的)下,我非常高兴。

当我尝试在 Visual Studio Express(VS2010 或 VS2012)中加载解决方案时,问题就出现了。加载解决方案时,它会失败并显示错误,指出某些项目无法加载,并且构建 PCL 版本的两个项目的构建输出如下所示:

C:\Path\To\NodaTime.csproj : error  :
     The project file 'C:\Path\To\NodaTime.csproj' cannot be opened.

There is a missing project subtype.
     Subtype: '{786C830F-07A1-408B-BD7F-6EE04809D6DB}'
     is unsupported by this installation.

(为了清晰起见,重新格式化。)这两个项目拒绝加载,因此您甚至无法浏览源代码。

我真的希望即使 Express 用户无法构建 PCL 版本,他们仍然能够加载解决方案、浏览源代码并构建非 PCL 版本。 MSBuild 通过命令行工作,但这并不友好。

我尝试删除引用 PCL 项目配置的解决方案配置,但这没有帮助。奇怪的是,甚至注释掉 XML 元素,如下所示:

<!-- 
    <ProjectTypeGuids>(Guids as before)</ProjectTypeGuids>
 -->

没有帮助 - 尽管删除该行确实有帮助。就好像 Visual Studio 实际上并未将其作为真正的 XML 文件加载。 (我还没有尝试将带有注释掉的元素的版本加载到 VS Pro 中。)

I could如果需要的话,我可以走生成单独的 PCL 项目文件的路线,但如果可能的话我真的想避免它 - 这会让正常的开发更加痛苦。同样我could生成仅限 Express 的 PCL 和解决方案文件,但我又不想这样做 - 只是感觉不对。

虽然理想情况下我希望在 2010 年和 2012 年都支持 VS Express,但如果有一个仅适用于 2012 年的解决方案,那将是一个良好的开始。

那么,有什么方法可以让 Visual Studio Express 相信它确实有效吗?can尽管条件属性组(不满足其条件)引用了它不知道的项目类型,但仍加载项目?


大卫基恩在这里的评论给了我目前使用的答案:

或者完全删除 元素 - 这将为您选择“可移植”增强功能,例如用于更改目标框架的 UI 等

我已经尝试过了,效果就像做梦一样。在正确安装了所有内容的计算机上,您甚至可以在 Express 下构建 PCL 版本!我已经验证生成的二进制文件确实是 PCL,而且看起来不错。

我不会惊讶地发现我后来遇到了一些问题,但目前这对我来说效果很好。我可以轻松地在没有 Visual Studio 增强功能的情况下生活 - 它已经因为我的项目具有非常不同的构建配置而感到困惑,所以我认为无论如何我都没有获得太多好处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以获得一个“有时可移植”的类库项目来加载到 Visual Studio Express 中吗? 的相关文章

随机推荐

  • Jquery 获取具有特定类的第 n 个子级

    我有一个 html 表如下 table tr td class take 1 td td 2 td td 3 td td class take 4 td td 5 td td class take 6 td tr tr td class t
  • 如何在 Java 8 中组合不同的流

    我有一个Set
  • 在代码中添加一个定时器,然后循环它

    尝试找到一种方法将计时器添加到我的代码中 然后用计时器不断循环它 例如 尝试通过单击按钮来制作物品 然后等待 5 秒以使其制作 然后只要我有材料 它就会自动开始再次制作 依此类推 我环顾四周的教程 但未能找到我一直在寻找的东西 这是我想要循
  • 专门针对右值的 std::swap

    在标准 20 2 2 utility swap 中 std swap 是为左值引用定义的 我知道这是当你想交换两件东西时的常见情况 但是 有时交换右值是正确且可取的 当临时对象包含引用时 如下所示 交换临时引用元组 https stacko
  • 如何仅定义自定义产品类型的字段 - Woo Commerce Hook

    我的代码显示在所有产品类型中 例如简单产品 可变产品 自定义类型 手段适用于所有人 但我想将其限制为仅适用于我的自定义类型 如何将自定义字段类型限制为英语课程产品类型 add filter product type selector eng
  • Tensorflow 中多维时间序列预测中的向量表示

    我有一个大型数据集 约 3000 万个数据点 具有 5 个特征 我已使用 K 均值将其减少到 200 000 个集群 数据是大约 150 000 个时间步长的时间序列 我想要训练模型的数据是每个时间步上特定簇的存在 预测模型的目的是生成一个
  • 将 Ajax JQuery 选择器保存在数组中

    我对 Ajax 非常陌生 需要帮助将 Ajax 请求中的数据存储到数组中 我在论坛上查看了答案 但无法解决我的问题 Ajax 响应正在进入 responseField val format output response 我想将 outpu
  • 等待多个 future 的回调

    最近我深入研究了一些使用 API 的工作 该API使用Unirest http库来简化从网络接收的工作 当然 由于数据是从 API 服务器调用的 因此我尝试通过使用对 API 的异步调用来提高效率 我的想法结构如下 通过返回 future
  • JDK 17:Switch 语句导致 java.lang.VerifyError:操作数堆栈上的类型错误

    刚刚在 Eclipse 2021 09 上尝试了 JDK17 结果失败并显示java lang VerifyError 这本身并没有多大帮助 我追踪到了一个 switch 语句 它被提供了一个从 a 中取出的值Map或其他泛型类型 如果我在
  • React-native cli 和带有 Bare 工作流程的 Expo 有什么区别? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我将构建一个具有多种复杂功能的非常大的应用程序 但我坚持以下几点 React native cli 和带有 Bare 工作流程的 Expo 有什
  • 在非常大的数组中查找重复项的算法

    在一次技术面试中得到了这个问题 我知道使用 在java中 HashSet解决这个问题的方法 但当面试官强行说出 这个词时 我无法理解一个非常大的数组 假设给定数组中有 1000 万个元素 我需要改变方法吗 如果不是 实现这一目标的效率应该是
  • Scrapy蜘蛛抓取页面和抓取项目之间的区别

    我正在编写一个 Scrapy CrawlSpider 它读取第一页上的 AD 列表 获取一些信息 例如列表和 AD url 的缩略图 然后向每个 AD url 发出请求以获取其详细信息 它在测试环境中工作和分页显然很好 但今天试图进行完整的
  • Java 中是否有与 Python 的 defaultdict 等效的工具?

    在 Python 中 defaultdict类提供了一种方便的方法来创建映射key gt list of values 在下面的示例中 from collections import defaultdict d defaultdict li
  • Bootstrap 模式确认表行删除

    我对网络工作非常陌生 我希望我能在这里得到一些有用的答案 我正在使用引导框架来设计一个网站 但遇到了一个小问题 我有一个表格 最后一个单元格中有一个删除按钮 我希望该按钮可以删除整行 我希望删除按钮激活引导模式以在删除之前确认表行删除 基本
  • Jenkins 未找到 SureFire 报告

    我已经在本地 jenkins 服务器中创建了一个 Maven 项目作业 项目 并添加了jenkin的TestNG插件来查看测试报告 但该作业没有显示我的 TestNg 结果 我看到以下错误 TestNG 报告处理 开始使用模式在工作区中查找
  • 使用 Backbone-Relational 实现多对多关系

    我有一个简单的应用程序 它定义了两个类 一个Person and a PersonGroup 其中存在多对多关系 一个人可以没有组 或者被分配到所有组 以及介于两者之间的任何组 backbonerelational org 上的示例建议对多
  • java中的@Documented注解

    目的是什么 Documentedjava中的注释 我看到了文档 但无法从中获得太多信息 有人可以通过一个清晰的例子指出 Documented是一个元注释 你申请 Documented定义注释时 确保使用您的注释的类在其生成的 JavaDoc
  • SGDClassifier 每次为文本分类提供不同的准确度

    我使用 SVM 分类器将文本分类为好文本和乱码 我正在使用 python 的 scikit learn 并按如下方式执行 Created on May 5 2017 import re import random import numpy
  • Pattern 和 type="email" 一起使用是否有问题?

    HTML5 电子邮件类型和模式 使用新的 HTML5 之间是否存在任何问题 冲突或其他问题 type值 例如email tel等 与pattern属性 我不是指 HTML5 浏览器兼容性 只是指这些属性的新值与pattern属性 为了清楚起
  • 我可以获得一个“有时可移植”的类库项目来加载到 Visual Studio Express 中吗?

    For 野田时间 http noda time googlecode com版本 1 1 的主要目标是构建可移植类库风格 主要是为了支持 Windows Phone 和 Windows Store 应用程序 这意味着失去一些功能 因此我们构