我目前必须有两个独立的属性组,它们之间只有两个差异,根据条件设置为具有一个或另一个触发器.这就是我所拥有的:
<!--CAME FROM TEAMBUILD-->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' != 'Debug|AnyCPU' AND '$(Configuration)|$(Platform)' != 'Release|AnyCPU' AND '$(BuildingInsideVisualStudio)' != 'true' ">
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
set MAGE="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\mage.exe"
set APPFILE=$(TargetDir)$(TargetName).application
set MANIFEST=$(TargetPath).manifest
set CERT=$(ProjectDir)$(TargetName).pfx
set PROJECTNAME=$(TargetName)
set CONFIGURATION=$(ConfigurationName)
set TARGETDIR=$(TargetDir)
set TEAMBUILD=$True
Powershell -File "$(ProjectDir)POSTBUILD.ps1"
</PostBuildEvent>
</PropertyGroup>
<!--CAME FROM PUBLISH COMMAND-->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' != 'Debug|AnyCPU' AND '$(Configuration)|$(Platform)' != 'Release|AnyCPU' AND '$(BuildingInsideVisualStudio)' == 'true' ">
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
set MAGE="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\mage.exe"
set APPFILE=$(TargetDir)$(TargetName).application
set MANIFEST=$(TargetPath).manifest
set …Run Code Online (Sandbox Code Playgroud) 我正在使用MSBuild在CruiseControl Server上创建Web部署程序包以部署Web应用程序。部署后,软件包中未包含的所有内容都将在我们的服务器上删除。
我尝试将选项SkipExtraFilesOnServer选项设置为true。但是它被Web Deploy忽略
<Target Name="CreateDeploymentPackage">
<MSBuild Projects="$(Web)" Targets="Package"
properties="Platform=$(Platform);
Configuration=$(Configuration);
DeployOnBuild=False;
DeployTarget=Package;
SkipExtraFilesOnServer=True;
MSDeployUseChecksum=True;
PackageLocation=$(DeployDirectory)\_PublishedWebsites\DeployPackage\$(CurrentProject).zip;
PackageAsSingleFile=True;
_PackageTempDir=$(PackageOutputDir)\temp;">
</MSBuild>
</Target>
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?我发现的每个文档都说应该。
我终于在VS2015上安装了VS2015,以避免为单独安装必要的组件而烦恼,但是现在在构建时遇到了一个新错误。
在我的解决方案上运行MSBuild会产生以下错误:
"C:\Users\Bamboo\bamboo-home\xml-data\build-dir\IMP-COOK-JOB1\Imp.Cook.Api\Imp.Cook.Api.sln" (default target) (1) ->
"C:\Users\Bamboo\bamboo-home\xml-data\build-dir\IMP-COOK-JOB1\Imp.Cook.Api\Imp.Cook.Api\Imp.Cook.Api.csproj" (default target) (2) ->
"C:\Users\Bamboo\bamboo-home\xml-data\build-dir\IMP-COOK-JOB1\Imp.Cook.Api\Imp.Cook.Models\Imp.Cook.Models.csproj" (default target) (3) ->
(ResolveNuGetPackageAssets target) ->
C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets(89,5):
error : The package Microsoft.CSharp with version 4.0.0 could not be found in
C:\Users\Bamboo\.nuget\packages.
Run a NuGet package restore to download the package.
Run Code Online (Sandbox Code Playgroud)
现在,我可以在Bamboo用户目录中手动创建一个.nuget文件夹,这会有所帮助(在下一个包中仍然失败Microsoft.NETCore.Portable.Compatibility)。
但是我在这里错过了什么难题呢?我nuget restore在运行msbuild之前先运行,它获取直接在项目中使用的软件包。
Imp.Cook.Models 是针对Windows 10通用应用程序和.NET 4.6的可移植类库。
生成服务器正在运行Windows Server 2012。
我从未在Visual Studio中使用命令窗口,但现在我正在研究如何使用构建脚本.我正在学习本教程:
https://msdn.microsoft.com/en-us/library/dd393573.aspx
我得到了在命令窗口中输入以下内容的部分:
msbuild buildapp.csproj /t:HelloWorld
Run Code Online (Sandbox Code Playgroud)
这就是我输入的内容,但我得到了
msbuild无效
在进入msbuild之前是否需要输入另一个命令?
我能够使用DOS cmd窗口转到我的C:驱动器上的MSBuild.exe位置.我能够在那里运行它.如果这是答案,那很好.我想我认为它可以从Visual Studio命令窗口运行它.
我有项目A,其对项目的依赖B,但也从没有提及B到A.我想建立和复制组件bin folder项目B,以bin folder项目A.我怎么能用post build事件做到这一点dotnet msbuild.
我找到了这个链接,但它适用于VS 2015及以下和MS-Build:
msbuild post-build-event visual-studio .net-core visual-studio-2017
我通过调用ILMerge收到以下错误.
ILMerge.Merge:ERROR !!:在程序集"System.Net.Http.Formatting"中找到重复类型"System.Net.Http.HttpRequestMessageExtensions".你想使用/ alllowDup选项吗?
你会认为这很容易解决.错误消息说明要做什么.
但是我对ILMerge的调用是由MSBuild.ILMerge.Task完成的
似乎我已经做了我需要做的事情来实现这一目标......
从我的ILMerge.props文件:
<!-- added in Version 1.0.4, default=none -->
<ILMergeAllowDuplicateType>true</ILMergeAllowDuplicateType>
Run Code Online (Sandbox Code Playgroud)
`我收到有关此属性文件验证的警告,但没有任何其他方法可以阻止构建.那么将它传达给ILMerge需要什么?
重现步骤
dotnet new console
(introduce a bug in Program.cs)
dotnet restore
dotnet build
Run Code Online (Sandbox Code Playgroud)
典型的输出为:
Microsoft (R) Build Engine version 15.1.548.43366 Copyright (C) Microsoft Corporation. All rights reserved.
Program.cs(5,5): error CS0116: A namespace cannot directly contain members such as fields or methods [/Users/xxx/Documents/myproj/myproj.csproj]
Build FAILED.
Program.cs(5,5): error CS0116: A namespace cannot directly contain members such as fields or methods [/Users/xxx/Documents/myproj/myproj.csproj]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:01.77
Run Code Online (Sandbox Code Playgroud)
您可以看到错误CS0116被报告两次。
我的问题是:有没有办法避免重复报告错误?
我在Team Services发布时遇到此错误.我怀疑这个错误发生,因为我生成一个压缩的工件.
MSBuild配置:
/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"
Run Code Online (Sandbox Code Playgroud)
然后在我的发布中我试图替换appsettings.json变量:
所以工件是一个zip文件,可能是因为发布管理没有找到appsettings.json文件.但是处理它的方法是什么?构建一个没有压缩的工件?
据我所知,已经有一个问题在这里问的是完全相同的错误消息,但不幸的是,公认的答案并不为我工作.
我能够在今天早上成功构建我当前的解决方案,但是〜15分钟前构建突然失败,并显示以下错误消息:
C:\ Program Files(x86)\ MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5):警告MSB3245:无法解析此引用.找不到程序集"MyAssembly.dll".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.
不幸的是,我的代码需要这个DLL.因为无法找到它,我的解决方案将无法编译.
我已经尝试过清洁然后再次构建我的解决方案,但这没用.
我注意到此引用旁边有一个黄色图标,所以我删除了引用,然后从<HintPath>我.csproj文件中标记内指定的完全相同位置再次添加它.(位置是\bin\Debug文件夹.)然后黄色图标消失.
但是,在我单击"构建解决方案"(在模式下)后,立即Debug再次出现黄色图标,我再次看到相同的MSBuild错误消息,通知我无法找到DLL.
我该如何解决这个问题?
我已将AfterBuild目标添加到Visual Studio项目,这是包含多个Visual Studio项目的解决方案的一部分。
解决方案设置示例
例子.sln
ExampleProj.csproj
ExampleProj.Test.csproj
目标示例:
<Target Name="PostBuildScript" AfterTargets="AfterBuild" Condition="'$(Configuration)' == 'Release'">
<PropertyGroup>
<BuildCommand>"SomeApplication.exe")</BuildCommand>
</PropertyGroup>
<Exec Command="$(BuildCommand)" ConsoleToMSBuild="true" LogStandardErrorAsError="true" WorkingDirectory="$(ProjectDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
我希望此目标仅在解决方案中的所有Visual Studio项目都已建立之后才能执行。
有没有办法实现这一目标。
注意:dotnet build在Visual Studio中使用和生成命令时,我的行为必须相同。
msbuild ×10
c# ×3
.net ×2
.net-core ×2
asp.net ×1
azure-devops ×1
cmd ×1
csproj ×1
dotnet-cli ×1
ilmerge ×1
msdeploy ×1
nuget ×1
package ×1
team-build ×1
tfs ×1