问题标签 [microsoft.build]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 构建 API - 恢复 nuget 包
我创建了一个应用程序,它使用 Build API ( https://msdn.microsoft.com/en-us/library/dn715758(v=vs.121).aspx )构建了我拥有的所有解决方案。
我面临的问题是它不会触发 nuget 包还原。这意味着,如果这是第一次有人构建源代码,或者包已被其他人更新,它不会在构建时自动更新/触发包恢复。
在文档中找不到任何东西,也许其他人知道一些东西?
wpf - 使用 Microsoft.Build 程序集构建 WPF 应用程序
我正在尝试使用 Microsoft.Build 程序集在 WPF(.Net Framework 4.0)项目上执行构建,即不从 VS 构建,也不是从命令行使用库存标准 MSBuild 构建。我的所有项目都成功构建,但 WPF 项目失败并显示以下消息:
C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\Microsoft.WinFx.targets(268,9): 错误 MSB4127: 无法从程序集“PresentationBuildTasks, Version=4.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35"。请验证任务程序集是使用与您计算机上安装的相同版本的 Microsoft.Build.Framework 程序集构建的,并且您的主机应用程序没有缺少 Microsoft.Build.Framework 的绑定重定向。无法将“Microsoft.Build.Tasks.Windows.MarkupCompilePass1”类型的对象转换为“Microsoft.Build.Framework.ITask”类型。[C:\Service\Test.csproj] C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319\Microsoft.WinFx.targets(268,9):错误 MSB4060:“MarkupCompilePass1” 任务已被错误地声明或使用,或在构建过程中失败。检查任务名称和程序集名称的拼写。
我发现引用(在 Stack Overflow 上)提到了更新的 MSBuild 程序集(12.0 与 4.0)等。这一切都已更新,即来自构建实用程序的引用,但没有运气。
有什么想法/建议吗?
c# - 使用 Microsoft.Build 命名空间发布 ClickOnce 应用程序
我有一个项目保存到我希望能够发布的文件位置。该项目设置了所有发布属性,我希望使用这些属性(URL 等)
我目前有以下创建构建的代码:
但我真的需要更进一步并发布它。
我遇到了命名空间Microsoft.Build.Tasks.Deployment.ManifestUtilities但是我不知道如何将它用于我需要的东西?
编辑
我有一些建议,但仍然不够。我现在有以下设置:
我有一个项目导出到文件位置,我正在编写一个将发布它的应用程序。
在我希望发布的项目中,我进行了以下更改:
vbproj文件:我添加了以下内容
在一个单独的 Web 项目中,我创建了一个 pubxml 文件并将其复制到我要发布的项目中。这包含以下内容:
上面提到的 vbproj 文件已经包含我希望使用的发布设置,所以我有一个问题是 - 我需要将它们复制到这个 pubxml 文件中吗?
从正在编写的应用程序开始(发布项目) - 我正在使用以下内容启动构建:
这似乎建立了这个项目,但我仍然没有得到出版物。我希望这个额外的细节能给别人更多的工作来帮助我完成这项工作!
visual-studio - 如何在powershell中使用需要值键对的api函数
我正在尝试使用 microsoft build api 使用 powershell 制作安装脚本。我知道如何在 C# 中做我想做的事,我测试了一个小例子,几乎在 powershell 中准备好了。我只需要知道要填写什么作为键值对。
C#:
在powershell中,我做到了这一点,它可以工作,但我不知道如何定义第三个参数。你能给我一个提示吗?
c# - 使用 Microsoft.Build 命名空间从 Visual Studio .sln 文件中获取项目列表
我想出了如何使用 Microsoft.Build 命名空间加载 .csproj 文件并提取几个属性:
现在如何使用 Microsoft.Build 加载 .sln 文件并获取 .csproj 文件列表?
.net - 将 buildManager 与最新的 microsoft.build.dll,v12.0.0.0 一起使用时构建失败
我更新了构建工具中的程序集参考,以使用 microsoft.build、microsoft.build.engine 和 microsoft.build.framework 的最新版本 (v12)。但是,在使用 BuildManager 编译项目时(我使用 Rebuild 选项进行编译),它在目标处失败:CleanWebsitesPackageCore,错误为 MSB4127:“无法从程序集“C:\Program Files (x86) 实例化“CheckPathAttributes”任务)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll"。请确认任务程序集是使用与安装的相同版本的 Microsoft.Build.Framework 程序集构建的您的计算机并且您的主机应用程序没有缺少 Microsoft.Build.Framework 的绑定重定向。无法转换类型为“Microsoft.Web.Publishing.Tasks”的对象。
需要注意的一点是,如果我尝试通过从命令提示符调用 MSBuild.exe 直接编译项目,它编译得很好。在查看日志时,我可以看到目标“CleanWebsitesPackageCore”在“干净”部分从未被调用。想知道为什么在使用 buildmanager 时调用目标而不是在命令提示符下直接调用 msbuild.exe 时调用目标?
任何人都知道为什么会这样。提前致谢。
visual-studio-2015 - 使用 Microsoft.Build (Visual Studio SDK) 编译 C# 6 时出错
这是一个有效的 C#6 测试代码。它在 VS2015 上编译
有cproj
工具版本14.0
这就是我试图通过Visual Studio SDK用MSBUILD编译它的方式
这是错误信息
我猜它使用了错误的 MSBUILD 可执行文件,但我发现无法强制使用 MSBUILD bin 路径。
c# - 生成 .cs 文件并包含在项目中
简短的
我正在生成 .cs 文件,然后自动将这些文件包含在指定的项目中(如果您对如何查看此问题感兴趣)。我可以运行该功能,并且文件按预期包含在内。
问题
我从项目中手动删除文件并保存。然后我重新运行该函数,但项目对象仍然包含已删除的项目 - 尽管项目已被重新评估,但事件。
GetItemsByEvaluatedInclude 函数返回一个项目,即使我已将其删除并且它不再位于 .csproj 文件中
我目前正在使用的代码:
笔记
视觉工作室专业版 2012
c# - 如何让 Visual Studio 2017 接受对 csproj 文件的修改
我开发了一个供内部使用的代码生成器,其中代码资产 (POCO) 是基于 C# 接口生成的。代码生成过程以编程方式将项目添加/删除到 csproj 文件。工作流程如下:开发人员在 Visual Studio 2017 中添加新的 C# 接口,或删除现有的 C# 接口。如果开发人员先保存项目文件,然后运行代码生成器,则一切正常。代码生成的资产要么添加到项目中(或删除),Visual Studio 相应地反映这些更改。但是,如果开发人员在运行代码生成器之前未能保存 csproj 文件,并且删除了 C# 接口,则不会从项目中删除代码生成的资产,因为 Visual Studio 不接受 csproj 文件修改。
在代码生成器中,我物理上删除了对已删除的代码生成文件的引用,并保存了 csproj 文件。我通过在记事本中打开 csproj 来验证引用的文件是否已从 csproj 文件中删除。但是,只要我将 Visual Studio 放在焦点上,Visual Studio 就会识别出 csproj 文件已更改,并询问我是否要丢弃、覆盖、另存为等,并且在我的代码生成过程中对 csproj 文件所做的更改会丢失。Visual Studio 将对已删除文件的引用添加回 csproj 文件。我尝试过丢弃、覆盖、另存为等,但我没有让 Visual Studio 接受新修改的 csproj 文件(其中删除了对已删除文件的引用)。
这是我删除代码生成的资产的代码:
是否可以让 Visual Studio 只接受新的 csproj 文件?删除资产时,我需要对 csproj 文件进行一些设置吗?让 Visual Studio 对修改后的 csproj 文件犹豫不决,这阻碍了代码生成器在删除不再需要的代码生成资产方面的有用性(源于物理删除 C# 接口文件)。
编辑
这是一个视频,展示了在 Visual Studio 中运行 T4 生成器的过程,该生成器基于 C# 接口生成 C# 资产。我删除了源 C# 接口,重新运行代码生成器,项目文件相应更新,导致项目重新加载。
https://www.screencast.com/t/JWTE0LpkXZGX
问题不在于项目被重新加载。问题是代码生成器更新并将 csproj 文件保存在 Visual Studio 之外,这会导致 Visual Studio 因 csproj 文件更改而感到困惑。你如何让 Visual Studio “静默”地接受保存到 csproj 文件的更改?
谢谢你的帮助。
c# - 如何从 C# 以编程方式将 SLN 文件与 MSBuild 一起使用?
我正在尝试使用较新的Microsoft.Build.Evaluation
API 在 C# 中创建自定义 MSBuild 脚本。我遇到的问题是这个较新的 API 不支持.sln
文件。较旧的已弃用Microsoft.Build.Engine
API 确实支持.sln
文件,但我想使用较新的 API,因为 1)它没有被弃用,并且 2)似乎有更多的在线文档和用法可供参考。我已经看到 MSBuild 可以.metaproj
在成功编译解决方案时创建文件,当在 CMD: 中进行此分配时set MSBuildEmitSolution=1
。我首先需要该.metaproj
文件才能编译解决方案。API中有什么可以转换.sln
为的.metaproj
吗?是否有任何用于解析.sln
文件的库?