次のビルドエラーが発生するのはなぜですか?
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番目のプロジェクトがどのように指定されているかわかりません。
プロジェクトファイルに保存されていますか?
[〜#〜] 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\
申し訳ありませんが、すぐに調査結果を投稿しませんでした。変更する必要があるものを確認するために、実際に再度調査する必要がありました。引用符を削除するとうまくいったと誰が考えたでしょうか?同僚の別のソリューションのビルドを表示しているときにこれを発見し、引用符がないことに気付きました。
PublishDirプロパティの末尾のスラッシュが終了引用符をエスケープしていることがわかります。末尾のスラッシュをエスケープすると、問題が解決しました。
/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\\"
この方法では、MSBuildで末尾のスラッシュが必要なプロパティに空白があるパスに引用符を使用できます。
私はこれが古い投稿であることを知っていますが、これを誰かと共有する必要があると感じています:-)
この問題は、パスまたはスペースを含むプロパティがあり、引用符で囲まれていない場合に発生します。
すべてのプロパティとパスに引用符がありますが、奇妙です。エラーメッセージはEducation
がスイッチであることを示しています。/p:ProductName="Total Education TEST"
動作するかどうかを確認します。
Git Bashでは、次のようにパラメーターを二重スラッシュで指定する必要がありました。
MSBuild.exe "Path\to\Solution.sln" //p:Platform="x86" //p:Configuration=Release //p:AppxBundlePlatforms="x86"
パスとファイル名の周りにqoutesを置く必要があります。
したがって、MSBuild "C:\ Path Name\File Name.Exe"/[Options]を使用します
パブリッシュパスの最後にある末尾のバックスラッシュまたはスラッシュを削除して、URLをインストールしてください。
/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest"
/p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest"
\ "および(または)/"を使用して特殊な文字列をヒットしている必要がありますが、cmd.exeで把握するのに十分な知識がありません。
私は常にPowershellを常に使用しています。これは、はるかに友好的で強力な方法です。
それが役に立てば幸い!
Vs2012では、デフォルトのTFSテンプレート「DefaultTemplate .... xaml」(通常はそのコピー)を使用して、ビルド定義「Test Build」を作成しようとします。
通常のself-explaining-errorで失敗します:「MSBUILD:エラーMSB1008:指定できるプロジェクトは1つだけです。Switch:Activities」
もちろん、デフォルトのTFSテンプレートのどこかに"
が欠落しているため、msbuildはスペースを含むエスケープされていないディレクトリをパラメーターとして受け取るため、複数のプロジェクトが発生します(?!)
したがって、TFSビルド定義名にスペースを使用することは絶対に避けてください。同時に、非常に悲しくてシンプルです。
エラーが発生したとき、パスワードパラメータを単一引用符で囲んでいました
/p:password='my secret'
悪い
二重引用符を使用して問題を解決するように変更しました。
/p:password="my secret"
良い
スペースを含む値の引用符を必要とするすべてのパラメーターに同じことが当てはまります。
さらに別の原因と解決策:間違った場所、つまりパラメーターにスペースを入れていないことを確認してください。私はdotnet -c Release - o /home/some/path
(-
とo
の間のスペースに注意してください)だったので、パス自体を見続けました。お役に立てば幸いです! (これはWindowsにも適用されるはずですが、これはBashにありました)
将来の読者のために。
指定した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"
これは、TFS MSBuild Argumentで機能しました。スラッシュの数に注意してください。
/ p:DefaultPackageOutputDir = "\\ Rdevnet\Visual Studio Projects\Insurance \"
私にとっては、最後の引用を追加するのを忘れていました
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)
に
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"
誰かが私と同じ問題を抱えている場合に備えて、「/ p」引数の前に「/」がありませんでした。説明からはあまり明確ではありません。これが誰かの助けになることを願っています。