在 .NET 中,您可以通过指定顶级元素上的属性来指定要使用哪个.NET 项目 SDK:SdkProject
<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) 具体来说,我期待零填充数字以创建基于字符串的标签.即将构建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
我正在使用WriteLinesToFile来更新更改日志文件(txt).它将文本附加到文件的末尾.理想情况下,我希望能够将更改写入此文件的开头.
是否有一个简单的任务(例如在社区或扩展包中)这样做?
我想知道如何使用exe二进制文件处理LESS文件列表,例如:
./dotless.Compiler.exe -m *.less
Run Code Online (Sandbox Code Playgroud)
现在我只能做单独的文件,但不能做通配符.
我之所以问这个问题的原因是我想在MSBuild中创建一个目标,即处理一个项目集合(这是一个文件列表).我找不到在MSBuild中循环任务的方法.如果有人知道如何为每个文件循环任务,那也将解决我的问题.
我正在使用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.有没有人面对这个?有什么方法可以解决这个问题吗?
是否有用于在AssemblyInfo.cs中设置自定义属性的MSBuild任务?我找到了AssemblyInfo任务,但它似乎无法设置自定义属性,只能预定义属性.我想设置我已添加到此文件中的3个自定义属性.
有什么建议如何解决这个问题?
请阅读,直到我清楚地陈述我的问题.我正在尝试实现一个自定义的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'仅用于说明目的)
这甚至可能吗?
在此先感谢,任何帮助将不胜感激.
我在.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)而没有任何成功.
这里有任何错误的想法都受到高度赞赏.
我尝试使用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,
我该怎么办?谁能帮忙..
我有一个带有单个被忽略测试的小型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-task ×10
msbuild ×9
msbuild-4.0 ×2
c# ×1
css ×1
dotless ×1
excel-2010 ×1
excel-addins ×1
vsto ×1