Webサイトプロジェクトを含むVS2010ソリューションを構築するときにMSBuildタスクを使用しようとすると、異常な動作が発生します。 Visual Studio 2010でそのソリューションを開き、コンパイルしようとすると機能します。しかし、MSBuildスクリプトからコンパイルしようとすると、エラーが発生して失敗します。MSBuildでWebサイトのコンパイルが失敗しますが、Visual Studioで動作します
WebSiteディレクトリにUser Controlがあり、コードの背後にはありません。
再現手順:
1.簡単な解決策があるとします。ただ、ウェブサイトと2つのユーザーコントロールを持つ:
ウェブ\コントロールHelpButton.ascxを\:
<%@ Control Language="C#" ClassName="HelpButton" %>
<script runat="server">
private string _helpUrl;
public string HelpUrl
{
get { return _helpUrl; }
set { _helpUrl = value; }
}
</script>
ウェブ\ AnotherFolder \ TestUserControl.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TestUserControl.ascx.cs" Inherits="AnotherFolder_TestUserControl" %>
<%@ Register Src="~/Controls/HelpButton.ascx" TagPrefix="myCtrl" TagName="HelpButton" %>
<myCtrl:HelpButton runat="server" ID="HelpButton" />
ウェブ\ AnotherFolder \ TestUserControl。 ascx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class AnotherFolder_TestUserControl : System.Web.UI.UserControl
{
protected override void OnLoad(EventArgs e)
{
this.HelpButton.HelpUrl = "trada";
base.OnLoad(e);
}
}
VS2010はこのウェブサイトを問題なく構築できます。 MSBuildの次
2)用途:それは私には見えます
Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.235]
Copyright (C) Microsoft Corporation 2007. All rights reserved.
Build started 9/9/2011 2:21:50 PM.
Project "d:\Src\MSBuildIssue\build.msbuild" on node 1 (default targets).
Project "d:\Src\MSBuildIssue\build.msbuild" (1) is building "d:\Src\MSBuildIssue\BuildTest.sln" (2) on node 1 (Build target(s)).
ValidateSolutionConfiguration:
Building solution configuration "Release|Any CPU".
Project "d:\Src\MSBuildIssue\BuildTest.sln" (2) is building "d:\Src\MSBuildIssue\WebSite.metaproj" (3) on node 1 (default targets).
Build:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe -v /WebSite -p WebSite\ -u -f PrecompiledWeb\WebSite\
d:\Src\MSBuildIssue\WebSite\AnotherFolder\TestUserControl.ascx.cs(12): error CS1061: 'System.Web.UI.UserControl' does not contain a definition for 'HelpUrl' and no extension method 'HelpUrl' accepting a first argument of type 'System.Web.UI.UserControl' could be found (are you missing a using directive or an assembly reference?) [d:\Src\MSBuildIssue\WebSite.metaproj]
Done Building Project "d:\Src\MSBuildIssue\WebSite.metaproj" (default targets) -- FAILED.
Done Building Project "d:\Src\MSBuildIssue\BuildTest.sln" (Build target(s)) -- FAILED.
Done Building Project "d:\Src\MSBuildIssue\build.msbuild" (default targets) -- FAILED.
Build FAILED.
"d:\Src\MSBuildIssue\build.msbuild" (default target) (1) ->
"d:\Src\MSBuildIssue\BuildTest.sln" (Build target) (2) ->
"d:\Src\MSBuildIssue\WebSite.metaproj" (default target) (3) ->
(Build target) ->
d:\Src\MSBuildIssue\WebSite\AnotherFolder\TestUserControl.ascx.cs(12): error CS1061: 'System.Web.UI.UserControl' does not contain a definition for 'HelpUrl' and no extension method 'HelpUrl' accepting a first argument of type 'System.Web.UI.UserControl' could be found (are you missing a using directive or an assembly reference?) [d:\Src\MSBuildIssue\WebSite.metaproj]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:02.66
:次のエラーが表示され
MSBuildのbuild.msbuild:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
DefaultTargets="Build">
<PropertyGroup>
<SolutionProperties>Configuration=Release</SolutionProperties>
</PropertyGroup>
<Target Name="Build" DependsOnTargets="">
<MSBuild Projects="BuildTest.sln" Targets="Build" Properties="$(SolutionProperties)" RebaseOutputs="true">
</MSBuild>
</Target>
</Project>
3.
)MSBuildのスクリプトを実行します。ユーザーコントロールが間違った順序でコンパイルされたように 'HelpButton'は 'TestUserControl'に配置され、 'TestUserControl'は 'HelpButton'オブジェクトのプロパティに値を割り当てます。 これは既知の問題ですか?これを回避する方法はありますか?MSBuildスクリプトからdevenv.exeを実行し、devenv.exeでソリューションをビルドすることでした。それは正常にコンパイルされますが、問題は、この方法で追加のMSBuildプロパティを送信できないことです。
はありがとう編集:ソリューションファイルに対して直接実行MSBuildのコマンドの出力:これは何行<%@ Register Src="~/Controls/HelpButton.ascx" ...
について
c:\Tmp\MSBuildIssue>msbuild.exe BuildTest.sln /target:Build /p:Configuration="Debug",Platform="Any CPU"
Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.235]
Copyright (C) Microsoft Corporation 2007. All rights reserved.
Build started 9/12/2011 12:05:38 PM.
Project "c:\Tmp\MSBuildIssue\BuildTest.sln" on node 1 (Build target(s)).
ValidateSolutionConfiguration:
Building solution configuration "Debug|Any CPU".
Project "c:\Tmp\MSBuildIssue\BuildTest.sln" (1) is building "c:\Tmp\MSBuildIssue\WebSite.metaproj" (2) on node 1 (default targets).
Build:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe -v /WebSite -p WebSite\ -u -f -d PrecompiledWeb\WebSite\
c:\Tmp\MSBuildIssue\WebSite\AnotherFolder\TestUserControl.ascx.cs(12): error CS1061: 'System.Web.UI.UserControl' does not contain a definition for 'HelpUrl' and no extension method 'HelpUrl' accepting a first argument of type 'System.Web.UI.UserControl' could be found (are you missing a using directive or an assembly reference?) [c:\Tmp\MSBuildIssue\WebSite.metaproj]
Done Building Project "c:\Tmp\MSBuildIssue\WebSite.metaproj" (default targets) -- FAILED.
Done Building Project "c:\Tmp\MSBuildIssue\BuildTest.sln" (Build target(s)) -- FAILED.
Build FAILED.
"c:\Tmp\MSBuildIssue\BuildTest.sln" (Build target) (1) ->
"c:\Tmp\MSBuildIssue\WebSite.metaproj" (default target) (2) ->
(Build target) ->
c:\Tmp\MSBuildIssue\WebSite\AnotherFolder\TestUserControl.ascx.cs(12): error CS1061: 'System.Web.UI.UserControl' does not contain a definition for 'HelpUrl' and no extension method 'HelpUrl' accepting a first argument of type 'System.Web.UI.UserControl' could be found (are you missing a using directive or an assembly reference?) [c:\Tmp\MSBuildIssue\WebSite.metaproj]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:01.77
ため
感謝の設定=「デバッグ」を、プラットフォーム=「AnyCPU」 '? – Andreas
元の投稿にコマンド出力を追加しました。それは同じエラーです。 –