标签: msbuild-task

有没有办法检测 .targets MSBuild 文件中当前使用的 SDK?

在 .NET 中,您可以通过指定顶级元素上的属性来指定要使用哪个.NET 项目 SDKSdkProject

<Project Sdk="Microsoft.NET.Web.Sdk">
Run Code Online (Sandbox Code Playgroud)

我正在编写一个 NuGet 包并尝试查找 MSBuild 属性或项目来保存正在使用的 SDK。我在官方文档中没有任何运气,也没有在MSBuild 结构化日志查看器中检查构建时找到一个。

是否有一种惯用的方法来识别在 MSBuild .targets 文件中为项目选择了哪个 Sdk?

我本来期望有一个像

$(MSBuildProjectSdkName) // "Microsoft.NET.Web.Sdk"
Run Code Online (Sandbox Code Playgroud)

msbuild msbuild-task

5
推荐指数
1
解决办法
551
查看次数

如何格式化MSBuild中的文本?

具体来说,我期待零填充数字以创建基于字符串的标签.即将构建7构建到构建007.您可以轻松地将字符串添加到一起,但在我对格式,填充,字符串等的所有搜索中...我无法找到任何引用.

我正在使用的示例.

<PropertyGroup>
  <FileParserVersion>File Parser $(Major).$(Minor).$(Build) Build $(Revision)</FileParserVersion>
  <VersionComment>Automated build: $(FileParserVersion)</VersionComment>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

This is generated: FILEPARSER_1_0_3_BUILD_7
What is preferred: FILEPARSER_1_0_3_BUILD_007

msbuild msbuild-task

4
推荐指数
2
解决办法
2761
查看次数

是否有一个MSBuild任务会将行写入文件的*start*?

我正在使用WriteLinesToFile来更新更改日志文件(txt).它将文本附加到文件的末尾.理想情况下,我希望能够将更改写入此文件的开头.

是否有一个简单的任务(例如在社区或扩展包中)这样做?

msbuild msbuild-task

4
推荐指数
1
解决办法
3662
查看次数

dotless:如何使用dotless.Compiler.exe处理LESS文件列表

我想知道如何使用exe二进制文件处理LESS文件列表,例如:

./dotless.Compiler.exe -m *.less
Run Code Online (Sandbox Code Playgroud)

现在我只能做单独的文件,但不能做通配符.

我之所以问这个问题的原因是我想在MSBuild中创建一个目标,即处理一个项目集合(这是一个文件列表).我找不到在MSBuild中循环任务的方法.如果有人知道如何为每个文件循环任务,那也将解决我的问题.

css msbuild msbuild-task dotless

4
推荐指数
1
解决办法
1666
查看次数

错误MSB4064:"复制"任务不支持"OverwriteReadOnlyFiles"参数

我正在使用Msbuild 4.0.当我使用Msbuild 3.5 OverwriteReadonlyfiles工作没有任何问题.

但是今天当我试图使用复制任务时,我遇到了这个问题.

错误MSB4064:

"复制"问题不支持"OverwriteReadOnlyFiles"参数.验证该任务上是否存在该参数,它是一个可设置的公共实例属性.

这是我的目标,它有复制任务

<Target Name="CopyBOM">

    <Copy SourceFiles="@(BOM)" DestinationFolder="%(BOM.Destination)" OverwriteReadOnlyFiles="true">
      <Output TaskParameter="CopiedFiles" ItemName="CopyBOMFiles" />
    </Copy>

    <Message Text="Copied to BOM: @(CopyBOMFiles)"/>


  </Target>
Run Code Online (Sandbox Code Playgroud)

以下是我在我的属性文件中使用的项目组

 <BOM Include="..\..\..\Release\CoreDeployment.msi">
      <Destination>..\..\..\Core\BOM\Comp1</Destination>
 </BOM>
Run Code Online (Sandbox Code Playgroud)

我有多个属性文件,我已经验证在所有地方都放置了Toolsversion = 4.0.有没有人面对这个?有什么方法可以解决这个问题吗?

msbuild msbuild-task msbuild-4.0

4
推荐指数
2
解决办法
5037
查看次数

用于在AssemblyInfo.cs中设置自定义属性的MSBuild任务

是否有用于在AssemblyInfo.cs中设置自定义属性的MSBuild任务?我找到了AssemblyInfo任务,但它似乎无法设置自定义属性,只能预定义属性.我想设置我已添加到此文件中的3个自定义属性.

有什么建议如何解决这个问题?

c# msbuild-task msbuildcommunitytasks pre-build-event

4
推荐指数
1
解决办法
2622
查看次数

如何将PropertyGroup/ItemGroup中可变数量的项传递给msbuild脚本

请阅读,直到我清楚地陈述我的问题.我正在尝试实现一个自定义的msbuild任务,该任务将接受来自msbuild脚本的可变数量的输入参数.我知道海关任务中的输入参数数组

public ITaskItem[] ArrayofItems { get; set; }
Run Code Online (Sandbox Code Playgroud)

这些可以使用propertygroup/itemgroup声明如下

<PropertyGroup>
<Item1>1</Item>
<Item2>2</Item>
<Item3>3</Item>
<Item4>4</Item>
<Item5>5</Item></PropertyGroup>

 <ItemGroup>
<File Include="1"></File>
<File Include="2"></File>
<File Include="3"></File>
<File Include="4"></File>
<File Include="5"></File>  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

然后从VS 2010命令行我可以设置/覆盖属性如下

msbuild somefile.csproj/t:MyTarget /p:Item1=Name1;Item2=Name2...etc

我的问题是: - 是否可以在构建文件中声明可变数量的propertygroup/itemgroup,以便我可以使用propertygroup/itemgroup从msbuild命令行传递'n'变量参数?

msbuild somefile.csproj/t:MyTarget/p:Item1 = Name1; Item2 = Name2; ItemN = NameN('N'仅用于说明目的)

这甚至可能吗?

在此先感谢,任何帮助将不胜感激.

msbuild msbuild-task msbuild-propertygroup

4
推荐指数
1
解决办法
2628
查看次数

MSBuild引用任务中的DLL

我在.csproj文件中定义了以下内联任务,该文件应运行BeforeBuild.

<UsingTask TaskName="VersioningTask" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
    <FileName ParameterType="System.String" Required="true" />
    <XmlFileName ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
    <Reference Include="System.Xml.dll" />
    <Reference Include="System.Xml.Linq.dll"/>
    <Using Namespace="System" />
    <Using Namespace="System.IO" />
    <Using Namespace="System.Linq" />
    <Using Namespace="System.Text" />
    <Using Namespace="System.Text.RegularExpressions" />
    <Using Namespace="System.Xml.Linq" />
    <Code Type="Fragment" Language="cs"><![CDATA[
        var xDoc = XDocument.Load(XmlFileName);
        //...
Run Code Online (Sandbox Code Playgroud)

从VS2012构建项目时,我收到以下错误:

找不到引用"System.Xml.dll".如果您的代码需要此引用,则可能会出现编译错误.

找不到引用"System.Xml.Linq.dll".如果您的代码需要此引用,则可能会出现编译错误.

如果我删除XML内容和两个引用,则构建成功.我试图使用DLL的完整路径(%windir%/ assembly)而没有任何成功.

这里有任何错误的想法都受到高度赞赏.

msbuild msbuild-task msbuild-4.0 visual-studio-2012

4
推荐指数
1
解决办法
2201
查看次数

构建错误+为excel 2010创建VSTO插件

我尝试使用VS 2010创建一个excel加载项.当我创建一个新项目Excel 2010 Addin时,尝试编译该解决方案.我收到一个错误.

'Error  1   The "FindRibbons" task could not be loaded from the assembly            
'Microsoft.VisualStudio.Tools.Office.BuildTasks, 
'Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.  Confirm that the   
'<UsingTask> declaration is correct, that the assembly and all its dependencies are   
'available, and that the task contains a public class that implements   
'Microsoft.Build.Framework.ITask.   DemoExcelAddIn1
Run Code Online (Sandbox Code Playgroud)

我下载了一个用于办公室运行时的VS 2010工具.但我找不到程序集'Microsoft.VisualStudio.Tools.Office.BuildTasks,

我该怎么办?谁能帮忙..

msbuild vsto msbuild-task excel-addins excel-2010

4
推荐指数
1
解决办法
5352
查看次数

MSBuild Exec任务是否在STDOUT中搜索字符串“错误”?

我有一个带有单个被忽略测试的小型NUnit测试套件。我现在正在编写一个简单的MSBuild脚本来还原和发布等。我试图让dotnet test任务正常工作

<Target Name="test" DependsOnTargets="restore">
    <Exec Command="dotnet test"
          WorkingDirectory="test\Example.Tests" />
</Target>
Run Code Online (Sandbox Code Playgroud)

但是,每次都以代码-1退出!

PS> dotnet msbuild /t:test build.xml
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

    Restore completed in 50.88 ms for C:\...\src\Example\Example.csproj.
    Restore completed in 57.18 ms for C:\...\test\Example.Tests\Example.Tests.csproj.
  Build started, please wait...
  Build completed.

  Test run for C:\...\test\Example.Tests\bin\Debug\netcoreapp1.1\Example.Tests.dll(.NETCoreApp,Version=v1.1)
  Microsoft (R) Test Execution Command Line Tool Version 15.0.0.0
  Copyright (c) Microsoft Corporation.  All rights reserved.

        Starting test execution, please wait... …
Run Code Online (Sandbox Code Playgroud)

msbuild msbuild-task

4
推荐指数
1
解决办法
393
查看次数