- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想以编程方式将导入添加到 MSBuild 项目。这个 Microsoft.Build.Evaluation
命名空间中的 API 允许我做到这一点(我更愿意通过 VS 可扩展性 API 实现相同的结果,但似乎没有任何方法可以做到这一点所以我求助于这个 API)。
如果我想在一种方法中打开一个或多个项目,查看它们的导入,有时还添加导入,我应该如何使用 ProjectCollection
对象?我是否总是创建一个新的 ProjectCollection,将项目加载到其中,然后在方法结束时将它们全部卸载?
我有可以完成我想要的工作的代码,我只是无法猜测如何“正确”使用此 API,因为只提供了通常的低级引用文档。
最佳答案
好吧,在没有任何关于如何使用此 API 的建议的情况下,我最终在每次想要使用项目对象时创建一个新的 ProjectCollection,然后在 ProjectCollection 上调用 UnloadAllProjects。
/// <summary>
/// Do something with a Microsoft.Build.Evaluation.Project.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="projectPath"></param>
/// <param name="worker"></param>
/// <returns></returns>
static T WithProject<T>(string projectPath, Func<Project, T> worker)
{
var pc = new ProjectCollection();
try
{
if (string.IsNullOrWhiteSpace(projectPath))
return default(T);
var evalProject = pc.LoadProject(projectPath);
return worker(evalProject);
}
catch
{
return default(T);
}
finally
{
pc.UnloadAllProjects();
}
}
或者,更简单(通过使用 ILSpy 窥探别人的 DLL):
public static Project GetMSBuildProject(string projectPath)
{
Project project = null;
if (project == null)
{
project = new Project(projectPath, new Dictionary<string, string>(), "12.0", new ProjectCollection());
}
return project;
}
关于msbuild - Microsoft.Build.Evaluation 的正确用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140413/
最近我在用 RestSharp消耗我的 Restful 资源。并期望在服务器和客户端之间与 JSon 交换数据。下面是我的 C# 代码。 var client = new RestSharp.Rest
我正在阅读 Bartosz Milewski 的一篇文章,其中他定义了以下函数: instance Applicative Chan where pure x = Chan (repeat x)
‘…' 其实是go的一种语法糖。 它的第一个用法主要是用于函数有多个不定参数的情况,可以接受多个不确定数量的参数。 第二个用法是slice可以被打散进行传递。 实例:
前言 在算face_track_id map有感: 开始验证 data={"state":[1,1,2,2,1,2,2,2],"pop":[&quo
本文实例讲述了php访问数组最后一个元素的函数end()用法。分享给大家供大家参考。具体分析如下: end()函数在PHP中用于检索数组中的最后一个元素。end()函数需要一个数组作为其唯一参数,
我使用的是 jdk1.8.0_92。我的虚拟机如下所示。 $java -version java version "1.8.0_92" Java(TM) SE Runtime Environment
我的情况是我需要将所有匹配 http://mywebsite.com/portfolio/[anyname] 的请求定向到 http://mywebsite.com/portfolio.php?用户名
我正在尝试在 NLTK 中使用语音标记并使用了以下命令: >>> text = nltk.word_tokenize("And now for something completely differe
#include typedef QList IntList; qRegisterMetaType("IntList"); error C2909: 'qRegisterMetaType':
来自 here我知道 BN_CTX 是一个保存 BIGNUM 临时变量的结构。这些 BIGNUM 变量什么时候会进入 BN_CTX 的 BN_POOL?如果我有一个 bignum_ctx BN_CTX
尝试为 ABPersonRef 创建对象例子:ABpersonRef 引用; 已包含Addressbook和AddressBookUI框架即使这样,当我编译时,它仍显示“ABPersonRef”未声明
我无法使用 GetAltTabInfo。可能是一个愚蠢的错误,但这有什么问题呢? HWND taskSwitcher = FindWindow(L"TaskSwitcherWnd", L"Task S
JSLint4Java 是 JSLint 的 Java 包装器。我需要这样的东西在我的 GWT 项目中使用,但使用 JSLint4Java 的唯一方法似乎是从命令行或通过 ANT 任务。有谁知道是否有
我有一个持久化实体对象的方法 persistData() 。我有另一个方法 findData() ,它对同一实体类执行 find() 操作以获取持久的主键值。当我在实体类的@PostPersist中调
下面是我的代码。请查看。 1. bool isUnavailable = db.Deploys.Where(p => p.HostEnvironmentId == Guid.Parse(h
这个问题已经有答案了: Why can't a Generic Type Parameter have a lower bound in Java? (6 个回答) 已关闭 9 年前。 我试图理解为什
我正在尝试使用 scala 编译器 Y 警告,但我认为我做得不对。在下面的示例中,nums 未使用,因此我希望 -Ywarn-value-discard 打印一个警告。有两个 if 条件,一个嵌套在另
用户被要求从某个给定的集合中选择一个 ID。我检查该 ID 是否存在于我的集合中,如果不存在,我会抛出 IndexOutOfBoundsException 并稍后捕获它。我实际上可以使用该异常来达到这
我正在尝试减少从 OSM 路径数据生成的形状文件。我正在使用 VTS 的 DouglasPeuckerSimplifier 实现。我想为特定 GTFS(通用交通提要规范)构建路线图的 geojson。
我明白了?!是排除某个模式,例如 a(?!b) 表示如果“a”后面没有“b”,它将匹配“a”。我的问题是,假设我有一个包含以下内容的文件: a cat is a cat, a dog is a dog
我是一名优秀的程序员,十分优秀!