标签: msbuild-task

WPF应用程序在vs2k8中构建,但不在命令行w/msbuild上构建

我有一个相当小的解决方案,包括一个WPF Windows应用程序.从解决方案构建时,它构建完美.我最近将解决方案中包含的项目集成到一个使用MSBuild的现有的,更大的命令行构建中.但是,从命令行构建时,我会收到以下错误:

MainWindow.xaml.cs(12,4): error CS0103: The name 'InitializeComponent' does not exist in the current context
View\EngineMonitorView.xaml.cs(12,4): error CS0103: The name 'InitializeComponent' does not exist in the current context
View\HostingEngineView.xaml.cs(12,4): error CS0103: The name 'InitializeComponent' does not exist in the current context
View\MainView.xaml.cs(13,4): error CS0103: The name 'InitializeComponent' does not exist in the current context
View\MainView.xaml.cs(17,52): error CS0103: The name 'gView' does not exist in the current context
View\PerformanceCounterView.xaml.cs(22,4): error CS0103: The name 'InitializeComponent' does not exist in the current context …
Run Code Online (Sandbox Code Playgroud)

msbuild wpf msbuild-task .net-3.5

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

使用MSBuild构建实体框架模型而不使用项目文件?

我正在为一个相当大的项目构建一个脚本.其中一个项目需要将实体框架模型编译到库中.由于构建服务器的工作方式,所有构建都是手工制作的,以管理各种部署方案,而不会影响开发人员和项目文件.

无论如何使用MSBuild任务生成EF模型而不使用Visual Studio生成的项目文件?目前,实际的程序集使用CSC任务进行编译,但实际部署的应用程序失败,因为EF模型未包含在已编译的程序集中.

是否可以使用目标或构建任务生成模型并创建嵌入程序集所需的资源的指针?

请注意

该项目在Visual Studio中编译良好,但是在构建服务器上使用项目文件不是一个选项,因为在部署时需要对项目进行各种更改,并且这是通过以外的自定义构建脚本来控制的.开发团队控制.这对于一些项目来说已经成功,但EF模型在这个特定场景中引起了一些麻烦.

更新

目前的解决方案并不理想但有效.已修改Project文件以将EF Model资源复制到项目中的新版本构建中的文件夹,然后将其检入源代码管理.当构建脚本在服务器上运行时,EF模型将嵌入到程序集中.目前这似乎是一个可行的解决方法.

deployment msbuild entity-framework compilation msbuild-task

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

在MSBuild任务中覆盖MSBuildExtensionsPath是不稳定的

这已在MS Connect中交叉发布:

https://connect.microsoft.com/VisualStudio/feedback/details/560451

我试图通过msbuild构建包含C#Web应用程序项目的解决方案时覆盖属性$(MSBuildExtensionsPath).我这样做是因为Web应用程序csproj文件导入文件"$(MSBuildExtensionsPath)\ Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets".此文件由Visual Studio安装到标准$(MSBuildExtensionsPath)位置(C:\ Program Files\MSBuild).我想消除对机器上安装的这个文件的依赖(我希望尽可能保持我的构建服务器"干净").为了做到这一点,我想在我的项目的源代码管理中包含Microsoft.WebApplication.targets,然后覆盖$(MSBuildExtensionsPath),以便csproj将导入此包含的Microsoft.WebApplication.targets版本.

当我从命令行构建解决方案文件时,此方案正常工作,通过/ p标志在命令行将自定义值$(MSBuildExtensionsPath)提供给msbuild.但是,如果我尝试使用自定义msbuild项目文件中的MSBuild任务构建解决方案(使用"属性"属性覆盖MSBuildExtensionsPath),则会失败,因为Web应用程序csproj文件正在尝试从中导入Microsoft.WebApplication.targets "标准"Microsoft.WebApplication.targets位置(C:\ Program Files\MSBuild).值得注意的是,如果我使用自定义项目文件中的"Exec"任务运行msbuild,它就可以运行.更值得注意的是,第一次使用"MSBuild"任务运行构建后,我使用"EXEC"任务(或直接从命令行)运行构建,构建工作.

以前有人见过这样的行为吗?我疯了吗?是否有人知道此问题的根本原因,可能的解决方法,或者这是否是MSBuild中的合法错误?

重现步骤:

1)在MSVS 2008中创建一个新的空解决方案(Fake.sln)

2)向解决方案添加新的C#Web应用程序(WebApplication1.csproj)

3)关闭MSVS

4)将"C:\ Program Files\MSBuild \"的内容复制到包含解决方案的目录中名为"MSBuildExtensions"的目录中.

5)重命名目录"C:\ Program Files\MSBuild\Microsoft\VisualStudio\v9.0\WebApplications",以便WebApplication1.csproj无法从该位置导入Microsoft.WebApplication.targets.

6)在与解决方案相同的目录中创建名为"TestBuild.proj"的自定义MSBuild项目文件.它应该具有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="BuildMSBuild">

<PropertyGroup>
    <MSBuildExtensionsPath>$(MSBuildProjectDirectory)\MSBuildExtensions\</MSBuildExtensionsPath>
    <BuildThis>Fake.sln</BuildThis>
</PropertyGroup>

<Target Name="BuildMSBuild">
    <MSBuild Projects="$(BuildThis)" Properties="MSBuildExtensionsPath=$(MSBuildExtensionsPath);" Targets="Clean" />
    <MSBuild Projects="$(BuildThis)" Properties="MSBuildExtensionsPath=$(MSBuildExtensionsPath);"/>
</Target>

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

7)从MSVS命令提示符执行"msbuild TestBuild.proj"(注意:构建可能会在第一次成功,但如果运行多次则会失败)

msbuild msbuild-task

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

如何在VS2010 Web部署构建模板中执行MSBuild任务?

我们最近从VS2008升级 - > VS2010(因此从Web部署项目升级到正确的部署项目).

显然,VS2010 Web部署中的新功能是将Workflow作为构建过程模板引入.

以前,我们在WDP中使用MSBuild任务来执行Yahoo YUI Javascript/CSS压缩模块来缩小/压缩javascript和css文件.

有没有人设法使用Visual Studio 2010完成此任务?

我见过Justin Etheridge创建的新的"SquishIt"压缩器,但它并不理想,因为它"动起来"(例如在Application_Start - Global.ascx上) - 这意味着你仍然需要将所有未压缩的文件推送到你的压扁前的网络服务器.

在工作流设计器中 - 我可以看到一个名为"MSBuild"的工具箱项 - 只是不知道如何使用它来完成我想要的.

一直在寻找高而宽,没有人似乎知道如何.

编辑

经过近2周,仍然没有解决方案/答案.肯定有人遇到过这个问题?现在我们刚刚通过VS命令提示符在构建后手动执行MSBuild任务.

编辑

依然没有!!

workflow msbuild-task visual-studio-2010 web-deployment tfs2010

5
推荐指数
0
解决办法
710
查看次数

MSBuild - 尝试运行xUnit(.net)测试

我正在尝试建立一个C#项目,在构建时运行xUnit测试,所以我可以在持续集成中使用它们.我有一个常规项目,一个使用xUnit的类库测试项目,以及我的测试运行器项目.从我读过的所有内容看来,我应该能够通过在测试运行器项目中执行此操作来实现此功能:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Test"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  [auto-created project stuff]
  <UsingTask AssemblyFile="xunit.runner.msbuild.dll"
      TaskName="Xunit.Runner.MSBuild.xunit" />
  <Target Name="Test">
    <xunit Assembly="$(MSBuildProjectDirectory)\..\OnePageOneDb.Tests\bin\Debug\OnePageOneDb.Tests.dll" />
  </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

当我在更改后构建我的解决方案(通常编辑.csproj文件)时,我得到了这个:

无法从程序集C:\ Users [myusername]\Code\OnePageOneDb\OnePageOneDb.TestRunner\xunit.runner.msbuild.dll加载"Xunit.Runner.MSBuild.xunit"任务.无法加载文件或程序集'file:/// C:\ Users [myusername]\Code\OnePageOneDb\OnePageOneDb.TestRunner\xunit.runner.msbuild.dll'或其依赖项之一.该系统找不到指定的文件.确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类.

即使我将xunit.runner.msbuild.dll和xunit.runner.utility.dll添加到它引用的位置的项目中,我收到此消息.但如果我再次建造没有任何变化,我会一直得到这个:

找不到"xunit"任务.请检查以下内容:1.)项目文件中任务的名称与任务类的名称相同.2.)任务类是"public"并实现Microsoft.Build.Framework.ITask接口.3.)在项目文件或位于"C:\ Windows\Microsoft.NET\Framework\v4.0.30319"目录中的*.tasks文件中正确声明了任务.

但我检查了所有这些东西:

  1. xunit.runner.msbuild.dll中的任务类是Xunit.Runner.MSBuild.xunit(并且xunit 在类名中是小写的).
  2. 任务类继承自Task,后者实现ITask.
  3. 所以也许在UsingTask中存在问题,但我不知道它是什么.

(我还认为问题可能是xunit.runner.msbuild.dll针对的是.NET 2.0,而我正在使用VS 2010,但我在.NET 2.0中重新创建了测试运行器项目并且问题仍然存在.)

有人可以帮忙吗?

msbuild xunit msbuild-task

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

错误MSB4018:"<exec>"任务意外失败

我在visual studio 2010和.net framework 4.0中遇到了这个错误.无法看到任何相关的解决方案,尤其是VS2010.任何意见/建议请.

错误MSB4018:""任务意外失败错误MSB4018:System.FormatException:输入字符串格式不正确.错误MSB4018:在System.Text.StringBuilder.AppendFormat(IFormatProvider提供程序,String格式,Object [] args)错误MSB4018:在System.String.Format(IFormatProvider提供程序,String格式,Object [] args)...... ...

msbuild msbuild-task visual-studio-2010

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

MSbuild,如何在嵌入式任务代码中访问项目属性值?

我有用csharp编写的内联任务代码

我想知道是否有任何内联任务代码访问propect属性

对于前。我正在尝试将字符串匹配替换为项目属性值。可能吗?

<![CDATA[
      MatchCollection matches = Regex.Matches(SourceStr, Pattern);

      for (int i = 0; i < matches.Count; i++)
           // replace the match value with project property... possible?


    ]]>
Run Code Online (Sandbox Code Playgroud)

msbuild msbuild-task msbuild-propertygroup

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

如何从控制台输出中隐藏我在MSBuild Exec任务中使用的命令?

我在我的MSBuild文件中有一个任务,如下所示:

<Exec command="net use $(DeploymentServerName) /user:username passwd" ContinueOnError="false" />
Run Code Online (Sandbox Code Playgroud)

但在控制台输出中它将转储命令:

...
net use $(DeploymentServerName) /user:username passwd
...
Run Code Online (Sandbox Code Playgroud)

但是如果可能的话,我想隐藏凭据.我不关心命令输出的位置,我只关心命令本身没有回显到控制台.有任何想法吗?

msbuild msbuild-task

5
推荐指数
2
解决办法
1665
查看次数

AfterBuild Target未检测到ItemGroup中的文件

问题应该是什么:

这是我ModuleCompilation.targets文件的内容:

<ItemGroup>
    <ConfigFilesToMove Include="bin\$(Configuration)\*.config"/>
</ItemGroup>
<Target Name="AfterBuild">
    <Message Text="Message for AfterBuild" />
    <Move SourceFiles="@(ConfigFilesToMove)" DestinationFolder="bin\$(Configuration)\Configuration\" />
</Target>
Run Code Online (Sandbox Code Playgroud)

消息已写入控制台,但文件未移动,怎么回事?

原始问题(您可以忽略):

我在csproj文件中包含了一个导入,以从另一个文件导入任务:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\ModuleCompilation.targets" />
Run Code Online (Sandbox Code Playgroud)

现在,这是我的ModuleCompilation.targets文件的内容:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="AfterBuild" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <BaseFiles Include="bin\$(Configuration)\Libraries\ModuleBase*"/>
        <ConfigFilesToMove Include="bin\$(Configuration)\*.config"/>
        <OtherFilesToMove Include="bin\$(Configuration)\*" Exclude="bin\$(Configuration)\$(MSBuildProjectName)*" />
    </ItemGroup>
    <Target Name="AfterBuild">
        <Message Text="AfterBuild" />
        <Move SourceFiles="@(ConfigFilesToMove)" DestinationFolder="bin\$(Configuration)\Configuration\" />
        <Move SourceFiles="@(OtherFilesToMove)" DestinationFolder="bin\$(Configuration)\Libraries\" />
        <Message Text="bin\$(Configuration)\Libraries\ModuleBase*" />
        <Delete Files="@(BaseFiles)" />
    </Target>
</Project>
Run Code Online (Sandbox Code Playgroud)

生成或重建时,控制台中确实显示“ AfterBuild”消息,并且确实生成了所有文件,但是它们并没有从Debug文件夹移动到我想要的位置。

如果我重建projet,文件会被移动,我想是因为已经存在,但是我想先生成文件然后再移动,但我不想让它们已经存在!

我一定缺少真正明显的东西,你能帮我吗?

编辑:

好的,所以我进行了一些测试,并且可以正常工作:

<ConfigFilesToMove Include="bin\Debug\App.config"/>
Run Code Online (Sandbox Code Playgroud)

虽然这不是:

<ConfigFilesToMove Include="bin\Debug\*.config"/>
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么? …

msbuild msbuild-task msbuild-4.0

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

在Xamarin iOS的Visual Studio App Center中,构建失败:仅当使用/ unsafe进行编译时,不安全代码才可能出现

我正在尝试在Visual Studio App Center中构建Xamarin iOS应用。该解决方案包含两个项目。一个是Xamarin iOS项目。另一个是绑定库项目。绑定库项目是使用Allow 'unsafe' code选项配置的。

在此处输入图片说明

但是,Xamarin.iOSApp Center中的构建任务失败:

Unsafe code may only appear if compiling with /unsafe

在此处输入图片说明

我能够在本地构建解决方案而没有任何问题。

有人有主意吗?


在尝试了不同的操作之后,我在构建配置中从.csproj文件切换到了.sln文件。

在此处输入图片说明

有人可以验证吗?

c# msbuild msbuild-task xamarin visual-studio-app-center

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