我有一个项目的解决方案.打开包管理器控制台,运行Install-Package MSBuildTasks但它在下面给出了一个错误:
Install-Package : The current environment doesn't have a solution open.
At line:1 char:16
+ Install-Package <<<< MSBuildTasks
+ CategoryInfo : InvalidOperation: (:) [Install-Package], InvalidOperationExcep
tion
+ FullyQualifiedErrorId : NuGetNoActiveSolution,NuGet.PowerShell.Commands.InstallPackage
Command
Run Code Online (Sandbox Code Playgroud)
我不明白为什么会这样.请建议我等待回复.谢谢
使用TeamCity编译我的MSBuild XML任务脚本时,它失败了:
[10:43:03]: myWebProject1\ myWebProject 1 .csproj (3s)
[10:43:07]: [ myWebProject1\ myWebProject1 .csproj] _CopyWebApplicationLegacy
[10:43:07]: [_CopyWebApplicationLegacy] Copy
[10:43:07]: [Copy] C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets(131, 5): error MSB3021: Unable to copy file "obj\Release\myWebProject1.dll" to "C:\MSBUILDRELEASE\myWebProject1\\bin\myWebProject1.dll". Could not find file 'obj\Release\myWebProject1.dll'.
Run Code Online (Sandbox Code Playgroud)
当我在本地运行它时,它的工作原理.
当我将本地输出与构建服务器输出进行比较时,构建服务器上缺少文件.就像我的构建服务器输出目录中缺少global.asax文件一样(但是当我在本地编译它时却没有).这是为什么?
这是我目前的MSBuildScript:
<?xml version="1.0" encoding="utf-8"?>
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0"
DefaultTargets="Build">
<PropertyGroup>
<OutputDir>C:\MSBUILDRELEASE</OutputDir>
</PropertyGroup>
<ItemGroup>
<ProjectToBuild Include="UtilityApp.sln" >
<Properties>OutputPath=$(OutputDir);Configuration=MSBuildRelease;Platform=x86</Properties>
</ProjectToBuild>
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(ProjectToBuild)"/>
<CallTarget Targets="Publish WebProject1" />
<CallTarget Targets="Publish WebProject2" />
</Target>
<Target Name="Publish WebProject1">
<RemoveDir Directories="$(OutputFolder)"
ContinueOnError="true" />
<MSBuild Projects="WebProject1\WebProject1.csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="WebProjectOutputDir=$(OutputDir)\WebProject1\; …Run Code Online (Sandbox Code Playgroud) 我正在尝试编辑我的项目文件,以便让我拥有一个可以同时构建多个构建配置的项目.我使用批处理方法并使用MSBuild任务(见下文)完成了这项工作.
如果我运行脚本,我会收到此错误:
错误103未为项目"ThisMSBuildProjectFile.csproj"设置OutputPath属性.请检查以确保您为此项目指定了Configuration和Platform的有效组合.Configuration ='Debug'Blatform ='AnyCPU'.
如果我从MSBuild任务添加或省略OutputPath,我会得到这个.如果使用VS2010调试器逐步执行脚本并调用MSBuild任务 - 调试器再次进入文件然后进入OutputPath,那么afaik,它应该选择该值,不是吗?
任何帮助都将非常感激 - 它让我发疯.谢谢,保罗.
这个MSBuildProjectFile.csproj(剩余的东西取出):
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<!-- Only Import normal targets if not building multiple projects -->
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" Condition="'$(Configuration)|$(Platform)' != 'AllBuild|AnyCPU' "/>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == '' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>C:\Folder\Etc\Output\$(Configuration)\</OutputPath>
<OutDir>C:\Folder\Etc\Output\$(Configuration)\</OutDir>
<BaseOutputPath>C:\Folder\Etc\Output\$(Configuration)\</BaseOutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<!-- Common -->
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<Platform>AnyCPU</Platform>
<!-- Repeated properties from above here (including, of course, OutputPath) -->
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' …Run Code Online (Sandbox Code Playgroud) 我觉得我以前修过这个,但我记不起来了.
我有一个看起来像这样的任务文件(CustomTasks.tasks):
<UsingTask AssemblyFile="CustomTasks.dll" TaskName="MyCustomTask"/>
Run Code Online (Sandbox Code Playgroud)
它引用了一个程序集(即Ionic.Zip.dll).Ionic.Zip.dll不在GAC中(我不希望它).它就在我的CustomTasks.dll旁边.
我有一个名为MSBuild的目录,从我的sln文件向上一级,其中包含CustomTasks.tasks,CustomTasks.dll和Ionic.Zip.dll.
我有一个csproj引用任务文件并调用自定义任务:
<Import Project="$(ProjectDir)\..\MSBuild\CustomTasks.tasks" />
<MyCustomTask ..... />
Run Code Online (Sandbox Code Playgroud)
在构建时,这会产生:
无法从程序集加载"MyCustomTask"任务.... MyCustomTasks.dll.无法加载文件或程序集'Ionic.Zip,......'或其依赖项之一.
我在Visual Studio项目中定义了几个具有不同条件的AfterBuild - Tasks:
<Target Name="AfterBuild" Condition="'$(Configuration)'=='FinalBuilder'">
<Message Importance="high" Text="--- AfterBuild for FinalBuilder ---" />
</Target>
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<Message Importance="high" Text="--- AfterBuild for MvcBuildViews ---" />
</Target>
Run Code Online (Sandbox Code Playgroud)
但是如果条件匹配,则只执行最后一个.如果我选择FinalBuilder-Configuration,则忽略AfterBuild任务而不执行.如果我更改项目文件中的Targets的顺序(Condition ="'$(Configuration)'=''FinalBuilder'"作为最后一个),则执行AfterBuild for FinalBuilder-Configuration但忽略MvcBuildViews的.
目标的顺序是否重要?是否只考虑了最后的AfterBuild任务?或者如何使用不同的条件定义不同的AfterBuild任务?
谢谢
康拉德
msbuild msbuild-task visual-studio-2010 visual-studio-project
我有一些关于Jenkins和NuGet包恢复的问题.
我正在尝试做的是在jenkins上构建解决方案(它工作得非常好).我已为解决方案启用了包还原,生成包含NuGet.exe,NuGet.Config和NuGet.targets的.nuget文件夹.
在Jenkins,我正在我们服务器上的私有包源中创建一些项目作为NuGet包.我在其他项目中使用这些包,应该在jenkins自己的基础上构建.
VS了解私有包源,它在全局NuGet.Config文件(AppData下的文件)中配置,并且未被禁用(默认情况下).
现在,当我尝试构建一个需要来自私有包源的包的解决方案时,构建失败,因为jenkins不知道它,因此-source在恢复未被替换为jenkins的包时提交空参数不知道自定义源.
到目前为止我尝试过的
我已经知道将私有源添加到解决方案NuGet.Config-或NuGet.Targets-file Package-Source将解决问题,但这意味着,我必须为我想要使用Jenkins构建的每个解决方案这样做.
我还通过将源代码添加到文件中的package-source标签,甚至使其成为活动源,在AppData和ProgramData中使用了配置文件,但是这也没有帮助.
cource,提交包将是一种解决方法,但这不是理想的结果,因为我们想忽略scm中的包.
基本上,我想知道是否有办法让Jenkins不断了解私有包源,或者操纵开发人员机器上的NuGet安装,以便生成NuGet.targets包含私有包源的-file. .另一个可能的修复是msbuild的参数,我不知道.
任何帮助是极大的赞赏!
我有三个Visual Studio解决方案.第一个配置为构建为Release,另外两个设置为构建为Debug.
当运行一个简单的MSBuild脚本显式声明要构建的配置(Debug)时,第一个项目仍然构建为Release.
示例脚本:
<Target Name="Build">
<ItemGroup>
<ProjectToBuild Include="$(SolutionsPath)\Solution1.sln"/>
<ProjectToBuild Include="$(SolutionsPath)\Core\Solution2.sln"/>
<ProjectToBuild Include="$(SolutionsPath)\UI\Solution3.sln"/>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)"
Targets="Rebuild"
Properties="Configuration=Debug;Platform=Any CPU"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以上的变体,如下所示,但我总是得到相同的结果.
<Target Name="Build">
<ItemGroup>
<ProjectToBuild Include="$(SolutionsPath)\Solution1.sln">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
<ProjectToBuild Include="$(SolutionsPath)\Core\Solution2.sln">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
<ProjectToBuild Include="$(SolutionsPath)\UI\Solution3.sln">
<Properties>Configuration=Debug</Properties>
</ProjectToBuild>
</ItemGroup>
<MSBuild Projects="@(ProjectToBuild)"
Targets="Rebuild"
Properties="Platform=Any CPU"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
我注意到有一个类似的问题,MSBuild任务 - 构建失败,因为一个解决方案是在发布而不是调试中构建的,但这是特定于TFS和Teambuild.我正在谈论纯MSBuild与从头开始创建的简单项目文件.
我该如何解决这个问题?
我正在尝试自动化为所有DLL设置版本的过程,花了一些时间后我才开始了解AssemblyInfo最有可能实现的任务.
所以我继续安装它,特别是版本1.0.51130.0.
安装后,我手动添加的Import标签(通过卸载每个项目)的AssemblyInfoTask在.cspoj文件(该溶液具有大于35个PROJ文件).
<Import Project="$(MSBuildExtensionsPath)\Microsoft\AssemblyInfoTask\Microsoft.VersionNumber.Targets"/>
Run Code Online (Sandbox Code Playgroud)
接下来我修改了Microsoft.VersionNUmber.Target将在path:中安装的文件C:\Program Files\MSBuild\Microsoft\AssemblyInfoTask,并修改了以下部分:
<!-- Properties for controlling the Assembly Version -->
<PropertyGroup>
<AssemblyMajorVersion>4</AssemblyMajorVersion>
<AssemblyMinorVersion>0</AssemblyMinorVersion>
<AssemblyBuildNumber></AssemblyBuildNumber>
<AssemblyRevision></AssemblyRevision>
<AssemblyBuildNumberType>DateString</AssemblyBuildNumberType>
<AssemblyBuildNumberFormat>01MMdd</AssemblyBuildNumberFormat>
<AssemblyRevisionType>AutoIncrement</AssemblyRevisionType>
<AssemblyRevisionFormat>00</AssemblyRevisionFormat>
</PropertyGroup>
<!-- Properties for controlling the Assembly File Version -->
<PropertyGroup>
<AssemblyFileMajorVersion>4</AssemblyFileMajorVersion>
<AssemblyFileMinorVersion>0</AssemblyFileMinorVersion>
<AssemblyFileBuildNumber></AssemblyFileBuildNumber>
<AssemblyFileRevision></AssemblyFileRevision>
<AssemblyFileBuildNumberType>DateString</AssemblyFileBuildNumberType>
<AssemblyFileBuildNumberFormat>01MMdd</AssemblyFileBuildNumberFormat>
<AssemblyFileRevisionType>AutoIncrement</AssemblyFileRevisionType>
<AssemblyFileRevisionFormat>00</AssemblyFileRevisionFormat>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
接下来,我将assemblyInfo.cs文件的版本设置1.0.0.0为每个项目.最后我保存并关闭它,重新打开解决方案并构建.它就像一个冠军!
现在什么要的是定制版本来4.0.1053.1这里10是今年指标是2010年的部分53代表周数,最后1表示版本号.
如何使用AssemblyInfoTask 实现这一目标?我发现了几个帖子,AssemblyInfo在Build Extension Pack中可以使用新版本的Task. …
我正在尝试让MSBuild 2010将Web应用程序发布到特定位置.我可以将部署包发布到特定路径,但部署包然后添加自己的路径更改.
例如:如果我告诉它发布到C:\dev\build\Output\Debug那时实际的web文件最终在C:\dev\build\Output\Debug\Archive\Content\C_C\code\app\Source\ControllersViews\obj\Debug\Package\PackageTmp
和C_C路径的一部分改变(不确定它如何选择路径的这一部分).
这意味着我不能只从发布位置编写副本.
我现在正在使用这个nant/msbuild命令:
<target name="compile" description="Compiles">
<msbuild project="${name}.sln">
<property name="Platform" value="Any CPU"/>
<property name="Configuration" value="Debug"/>
<property name="DeployOnBuild" value="true"/>
<property name="DeployTarget" value="Package"/>
<property name="PackageLocation" value="C:\dev\build\Output\Debug\"/>
<property name="AutoParameterizationWebConfigConnectionStrings" value="false"/>
<property name="PackageAsSingleFile" value="false"/>
</msbuild>
Run Code Online (Sandbox Code Playgroud)
有关如何将Web文件直接发送到特定位置的任何想法?
我有一个MSBuild项目,我希望将当前日期添加到我正在创建的zip文件中.
我正在使用MSBuildCommunityTasks.
<!-- Import the CommunityTasks Helpper -->
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" />
Run Code Online (Sandbox Code Playgroud)
在网站http://msbuildtasks.tigris.org/上我可以看到一个叫做时间的任务.我还没能找到关于如何使用Time的文档.