web-dev-qa-db-ja.com

MSBUILD:エラーMSB1008:指定できるプロジェクトは1つだけです

次のビルドエラーが発生するのはなぜですか?

C:\ WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe C:\ Code\EduBenesysNET\EduBenesysNET\EduBenesysNET.vbproj/t:publish/p:Configuration = Release/p:Platform = AnyCPU/v:detailed/p:PublishDir = "\\ BSIIS3\c $\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest \" /p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest/ "/p:ApplicationVersion=1.0.1.198/p:ProductName =" Total Education TEST "/ p:PublisherName =" BeneSys、Inc. "/p:UpdateRequired = "True" /p:MinimumRequiredVersion=1.0.1.198
Microsoft(R)Build Engineバージョン3.5.30729.1 
 [Microsoft .NET Framework、バージョン2.0.50727.3603] 
著作権(C)Microsoft Corporation2007。Allrights reserved。
 
 MSBUILD:エラーMSB1008:指定できるプロジェクトは1つだけです。
スイッチ:教育
 
スイッチの構文については、「MSBuild/help」と入力してください

2番目のプロジェクトがどのように指定されているかわかりません。
プロジェクトファイルに保存されていますか?

99
Gerhard Weiss

[〜#〜] solution [〜#〜]
/p:PublishDir設定を囲む引用符を削除します

つまり.
引用符の代わりに

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\"  

引用符を使用しない

/p:PublishDir=\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\  

申し訳ありませんが、すぐに調査結果を投稿しませんでした。変更する必要があるものを確認するために、実際に再度調査する必要がありました。引用符を削除するとうまくいったと誰が考えたでしょうか?同僚の別のソリューションのビルドを表示しているときにこれを発見し、引用符がないことに気付きました。

36
Gerhard Weiss

PublishDirプロパティの末尾のスラッシュが終了引用符をエスケープしていることがわかります。末尾のスラッシュをエスケープすると、問題が解決しました。

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\\"

この方法では、MSBuildで末尾のスラッシュが必要なプロパティに空白があるパスに引用符を使用できます。

私はこれが古い投稿であることを知っていますが、これを誰かと共有する必要があると感じています:-)

119
Matt

この問題は、パスまたはスペースを含むプロパティがあり、引用符で囲まれていない場合に発生します。

すべてのプロパティとパスに引用符がありますが、奇妙です。エラーメッセージはEducationがスイッチであることを示しています。/p:ProductName="Total Education TEST"動作するかどうかを確認します。

24
Julien Hoarau

Git Bashでは、次のようにパラメーターを二重スラッシュで指定する必要がありました。

MSBuild.exe "Path\to\Solution.sln" //p:Platform="x86" //p:Configuration=Release //p:AppxBundlePlatforms="x86" 
18
friday

パスとファイル名の周りにqoutesを置く必要があります。
したがって、MSBuild "C:\ Path Name\File Name.Exe"/[Options]を使用します

10
Zamir

パブリッシュパスの最後にある末尾のバックスラッシュまたはスラッシュを削除して、URLをインストールしてください。

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest"
/p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest"

\ "および(または)/"を使用して特殊な文字列をヒットしている必要がありますが、cmd.exeで把握するのに十分な知識がありません。

私は常にPowershellを常に使用しています。これは、はるかに友好的で強力な方法です。

それが役に立てば幸い!

4
Cédric Rup

Vs2012では、デフォルトのTFSテンプレート「DefaultTemplate .... xaml」(通常はそのコピー)を使用して、ビルド定義「Test Build」を作成しようとします。

通常のself-explaining-errorで失敗します:「MSBUILD:エラーMSB1008:指定できるプロジェクトは1つだけです。Switch:Activities」

もちろん、デフォルトのTFSテンプレートのどこかに"が欠落しているため、msbuildはスペースを含むエスケープされていないディレクトリをパラメーターとして受け取るため、複数のプロジェクトが発生します(?!)

したがって、TFSビルド定義名にスペースを使用することは絶対に避けてください。同時に、非常に悲しくてシンプルです。

3
user3636264

エラーが発生したとき、パスワードパラメータを単一引用符で囲んでいました

/p:password='my secret'悪い

二重引用符を使用して問題を解決するように変更しました。

/p:password="my secret" 良い

スペースを含む値の引用符を必要とするすべてのパラメーターに同じことが当てはまります。

2
John K

さらに別の原因と解決策:間違った場所、つまりパラメーターにスペースを入れていないことを確認してください。私はdotnet -c Release - o /home/some/path-oの間のスペースに注意してください)だったので、パス自体を見続けました。お役に立てば幸いです! (これはWindowsにも適用されるはずですが、これはBashにありました)

2

将来の読者のために。

指定したLOGファイルにスペースが含まれていたため、このエラーが発生しました。

前:

/l:FileLogger,Microsoft.Build.Engine;logfile=c:\Folder With Spaces\My_Log.log

AFTER:(解決した)

/l:FileLogger,Microsoft.Build.Engine;logfile="c:\Folder With Spaces\My_Log.log"
2
granadaCoder

これは、TFS MSBuild Argumentで機能しました。スラッシュの数に注意してください。

/ p:DefaultPackageOutputDir = "\\ Rdevnet\Visual Studio Projects\Insurance \"

1
Mark Monforti

私にとっては、最後の引用を追加するのを忘れていました

/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)

/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"

1
Reza

Jenkinsでデフォルトのワークスペースを使用すると、これが発生する場合があります。スペースなしでカスタムワークスペースの場所を使用します。

enter image description here

1
user8537391

誰かが私と同じ問題を抱えている場合に備えて、「/ p」引数の前に「/」がありませんでした。説明からはあまり明確ではありません。これが誰かの助けになることを願っています。

0
Johnny