Microsoft.WebApplication.targetsがビルドサーバーに見つかりませんでした。あなたの解決策は何ですか?


410

ビルドサーバーでプロジェクトをビルドしようとすると、次のエラーが発生します。

Microsoft (R) Build Engine Version 4.0.30319.1
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

ビルドサーバーにVisual Studio 2010をインストールして、数か月前にこの問題を解決しました。しかし、私は新しいサーバーを最初からセットアップしています。この問題を解決するためのより良い解決策があるかどうかを知りたいです。


1
Webアプリケーションプロジェクトは非推奨ですか?古いバージョンのVisual Studioをビルドするためにそれらを必要とする根拠は何ですか?
ブライアリー

1
もっと重要なことですが、実際にビルドサーバーを介してデプロイしますか?たとえば、私はしません、別のWebインストーラープロジェクトもソリューションにあります...そして、それでもこの血なまぐさいことを望んでいます...答え= projファイルから削除してください!簡単です。
Paul Zahra、2015


1
<Import Project="..\Packages\MSBuild.Microsoft.VisualStudio.Web.targets.14.0.0.3\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />パスを次の$(VSToolsPath)ように置き換えることで修正:<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" />
GJ

回答:


207

質問のタイトルに回答するには(ただし、出力に関する質問には回答しない):

次のフォルダーを開発用マシンからビルドサーバーにコピーすると、それがWebアプリケーションのみの場合、これが修正されます

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications

ビルドの破損状況に応じてx86を削除します。他のプロジェクトタイプがある場合は、おそらくmsbuildフォルダ全体をコピーする必要があります。


11
これは、v10.0をv11.0に置き換えた後、VS2012プロジェクトでm2に対して機能しました
DenNukem

2
これの代わりにMSBuildツールをインストールすることはできませんか?microsoft.com/en-us/download/confirmation.aspx?id=40760
user20358

1
残念ながら、MSBuildのツールをインストールするだけでは十分でビルドプロジェクトへのVisualStudio 2013でコンパイル細かいことではありません
マイケル・ショー

VS2013をインストールした後、Webフォルダーをv11.0にコピーして機能させる必要がありましたが、そこにありませんでした。VSでコンパイルできますが、MSBUILDを介して直接コンパイルすることはできません。
Martin Braun、2015

9
VS2017で働いていました。C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ vXX.0 \ WebApplicationsをC:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ WebApplicationsに
コピーするだけです

95

VSがインストールされていない場合、WAPの構築と公開はサポートされません。そうは言っても、本当にVSをインストールしたくない場合は、の下にあるすべてのファイルをコピーする必要があります%ProgramFiles32%\MSBuild\Microsoft\

Web配置ツールもインストールする必要があります。それだと思います。


4
言った-ダンサムシングからの以下の答えを見てください-あなたの答えは正しいですか?VS 2010 Shell Integratedパッケージをインストールしても、.NET SDKはWebアプリケーションプロジェクトサポートを正しくインストールしませんか?
アダム

@SayedIbrahimHashimi手動でフォルダをコピーする場合、DLLをGACに登録する必要がありますか?
TheOptimusPrimus 2013

そして、Microsoft.TextTemplating.targetsはどうですか?それらをフォルダーに入れるにはどうすればよいですか?C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0
Developer

@ClarkKent、申し訳ありませんが、TextTemplatingファイルと話すことができません。私はそれらに精通していません。
イブラヒム・ハシミによると2013

77

UPD:VS2017以降、ビルドツールにはこの問題を完全に排除するワークロードがあります。@SOReaderの回答を参照してください。

ビルドサーバーで何も変更せず、プロジェクトをソース管理から直接ビルドしたい場合は、必要なバイナリをソース管理下に置くことをお勧めします。プロジェクトファイルのインポートセクションを次のように変更する必要があります。

<Import Project="$(SolutionDir)\BuildTargets\WebApplications\Microsoft.WebApplication.targets" />
<Import Condition="false" Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

最初の行は、ソリューションディレクトリに関連する新しい場所からの実際のインポートです。2つ目Condition="false"は、元の行のオフバージョン()です。これにより、Visual Studioはプロジェクトを有効なWebアプリケーションプロジェクトと見なすことができます(これはVS 2010 SP1自体が行うトリックです)。

ソース管理下のC:\Program Files (x86)\Microsoft\VisualStudio\v10.0\WebApplicationsto BuildTargetsフォルダーをコピーすることを忘れないでください。


この解決策は私にとってはうまくいき、私の場合は本当に最良の選択肢でした。これは、ビルドサーバーにアクセスできないためです。新しいサーバーを起動してビルドサーバーとして機能するAtlassianのElastic bambooを使用しています。これらのAMIにWebアプリケーションターゲットが含まれているように見えますか?それは私には意味がありませんが、そのように見えます。
Cody Clark、

1
これは良い方法ですが、この変更では各csprojファイルを変更する必要があります。新しいプロジェクトをソリューションに追加する場合は注意が必要です。もちろん、それはカスタムプロジェクトテンプレートで解決できますが、それでも..とにかく、この答えは私に正しい方向を示しました。ありがとう!
100r

76

現在、2017年には、MSBuildToolsを使用してWebApplication redistsをインストールできます。MSBuild 2017ツールをダウンロードするこのページに移動し、インストール中Web development build toolsにこれらのターゲットもインストールするためにクリックしてください: ここに画像の説明を入力してください

これC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\WebApplicationsにより、不足しているライブラリがデフォルトでインストールされます


2
ソース管理へのlibのパッキングについての私の5歳の私はかなり驚いています。そして、それは今日でもまだ賛成票を投じていますが、これは箱から出して正解です。
Andriy K

2
@AndriyKあなたの解決策は、私が提案したものと異なるビットであり、それはただ怠惰でない限り、誰かが...私の上であなたを好むかもしれない理由を私は理解して、D
SOReader

2
これをより一般的にするために、Visual Studioの将来のバージョンでは、visualstudio.microsoft.com / downloadsから最新のビルドツールをダウンロードできます。 ページを下にスクロールし、下部近くにある「Tools for Visual Studio」セクションを展開して、「 Visual Studio用のビルドツール」。現在、これらはVS 2017用ですが、将来のバージョンでも同じになると思います。ちなみに、CIツール(Jenkinsなど)のmsbuild.exeへのパスが必要な場合、VS 2017の場合、C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0にインストールされます。 \ Bin \ msbuild.exe。
Simon Tewsi

2
これを行うビルドサーバー互換(読み取り:コマンドライン)の方法はchoco install visualstudio2017-workload-webbuildtoolsです。
ポールヒックス

1
また、「Web開発ビルドツール」パッケージMicrosoft.VisualStudio.Workload.WebBuildTools、を呼び出すことにより、コマンドラインからインストールできますvs_BuildTools.exe --add Microsoft.VisualStudio.Workload.WebBuildTools--passiveユーザーの介入を必要としないように追加します。
Wai Ha Lee

70

NuGetパッケージMSBuild.Microsoft.VisualStudio.Web.targetsを使用してVisual Studioプロジェクト内でそれらを参照し、Andriy Kの提案に従って参照を変更することもできます。


2
最初にソリューションを開く必要があるため使用できませんが、エラーのために使用できません。
開発者

ソリューションに複数のプロジェクトがある場合でも、1。ソリューションを開くことができます。Webプロジェクトが読み込まれないことを無視してください。2. nuget参照を追加します。3.その後に言及されているアプローチの1つを採用します。プロジェクトファイルを手動で編集するか、TeamCityでenv.VSToolsPath変数をオーバーライドできます。
デイモン

1
これは公式にリリースされたMS nugetパッケージですか、それとも誰かが作成しただけですか?
Simon_Weaver 14

素晴らしいソリューション-VSの異なるバージョンで動作します。.csprojファイル、YMMVを編集する必要がありました
Jonno

39
これは公式にリリースされたMicrosoft nugetパッケージではありません。私が作ったので知っています。
mak '30 / 07/30

54

ここのこの投稿に基づいて、Microsoft Visual Studio 2010 Shell(Integrated)Redistributable Packageをダウンロードするだけで、ターゲットがインストールされます。

これにより、ビルドサーバーにVisual Studioをインストールする必要がなくなります。

私は今これを試しました、そしてそれが機能することを確認できます:

前:

エラーMSB4019:インポートされたプロジェクト「C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets」が見つかりませんでした。宣言内のパスが正しいこと、およびファイルがディスク上に存在することを確認してください。

インストール後:

[正しくビルドする]

これは、ビルドサーバーにVisual Studioをインストールするよりもはるかに優れたソリューションです。


7
これは、最も簡単でシンプルなソリューションIMOです。私はVS 2013を使用していますが、Visual Studio 2013 Shell(Isolated)Redistributableが有効であることがわかりました(分離されたものに依存しているため、統合されたものはインストールされません)。
Matt Miller 14

@MatthewSkelton- ビルドサーバーの意味は何ですか?
Mohammed Zameer 2015

2
@BountyMan-ビルドサーバーは、ソフトウェアの継続的インテグレーション(CI)ビルドを実行または制御するサーバーです。例:Jenkins、TeamCity、CruiseControlなど
Matthew Skelton

3
残念ながらVS v14.0では、パッケージをインストールする方法はnugetを使用していますが、私の問題はビルドサーバーにVSがインストールされていない(MSBuildのみ)ことでしたので、パッケージをインストールすることはほぼ不可能でした。PCからサーバーにフォルダーをコピーする前に、PowerShellとNugetのさまざまなハーフバックアップインストールをいじくり回すのに何時間も費やしました。
pasx

1
@pasxエラーメッセージに「v14」が含まれている場合は、代わりにVisual Studio 2015分離シェルをインストールできます。私のために機能しました-visualstudioextensibility.com/downloads/vs-shells([ダウンロードURL]の下にあります。必須の調査があります。お楽しみください!)
2017

38

上記の最新のWindowsSDK。Microsoft.WebApplication.targetsの「Microsoft Visual Studio 2010 Shell(Integrated)Redistributable Package」とMicrosoft.Data.Schemaの「Microsoft Visual Studio Team System 2008 Database Edition GDR R2」に加えて.SqlTask​​s.targetsを使用すると、Visual Studio 2010をインストールする必要性が軽減されます。ただし、VS 2010のインストールは、実際にはダウンロード全体が少なく、最終的には作業が少ない可能性があります。


参考までに-本格的なVSをインストールせずにビルドサーバーでSQLプロジェクトをビルドしようとしている場合、ここで説明したTeam System 2008 Database Edition GDR R2インストーラーではうまくいきません。前提条件は、Visual Studio Team System 2008 Database Edition SP1(英語)またはVisual Studio Team System 2008 Suite SP1(英語)およびVisual Studio 2008 Service Pack 1です。ただし、SqlServer.targetsを.NET Frameworkからコピーすることはできます\ \ program files \ msbuild \ microsoft \ visual studio \ v10.0 \からv4ディレクトリとTeamData msbuildターゲットファイルを作成すると、csprojsがビルドされます。
Ethan J. Brown

それは間違いなく最もきれいな解決策ではありませんが、私にとって時間は最も重要です。MSBuildディレクトリをコピーするだけで、さらに多くの問題が発生します。

21
独立した開発者がクライアント用のビルドサーバーを設定している場合、クライアントがソフトウェアをビルドできるようにVisual Studioライセンスを維持する必要がないので、これは本当に重要な答えです。
thelsdj 2012

私は、VS2010シェル統合パッケージとEntLib 5だけで、私のビルドを作成できました。チームシステムは必要ありませんでした。
Robin Winslow、

1
VS 2010 Shellは、そのリンクでは利用できなくなりました。「探しているリソースは削除されたか、名前が変更されたか、一時的に利用できなくなっています。」
kristianp 2014

22

NuGetを介して依存関係を追加し、ビルドパラメーターを設定する

目標:ビルドエージェントに変更/インストールは不要

Andrikによるバイナリ依存ソリューションコミットに基づいLloyd hereよるNuGetアプローチへのハイブリッドアプローチを採用しました。

これは、このような項目で事前に構成する必要なく、新しいビルドエージェントを追加できる理由です。

  1. Visual Studioを備えたマシンで、ソリューションを開きます。Webプロジェクトが失敗することを無視します。
  2. Lloydが述べたように、NuGetパッケージマネージャーでMSBuild.Microsoft.VisualStudio.Web.targetsを追加します。
  3. これにより、バイナリが解決されます [solution]\packages\MSBuild.Microsoft.VisualStudio.Web.targets.nn.n.n.n\tools\VSToolsPath\
    1. これらを参照フォルダーにコピーしてコミットし、
    2. または、彼らがいる場所でそれらを使用します。私はこれを選択しましたが、後でパスのバージョン番号を処理する必要があります。

バージョン7では、次のことを行いました。これは必要なかったかもしれないし、コメントに基づいて今は絶対に必要ではない。以下のコメントをご覧ください。

  1. 次に、TeamCityビルド構成で、ビルドパラメーターを追加env.VSToolsPathし、VSToolsPathフォルダーに設定します。使った..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1\tools\VSToolsPath

8
あなたは、単にこの1と、プロジェクトファイルの<インポート>要素を交換する場合は、ステップ4を実行する必要がありません何:<Import Project="..\..\packages\MSBuild.Microsoft.VisualStudio.Web.targets.12.0.1\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />
knocte

これは受け入れられた答えであるはずです...そしてポイント4は削除されるべきです。
イジー

@イジーありがとう、代わりにknocteが示すようにコメントをしましたか?私は数年前にTC、バージョン7 iircを使用していません。
デイモン

@Damon TCではなくJenkinsを使用しているので、最後のポイントは必要なかったのかもしれません。
Izzy

21

ビルド/ CIサーバーでビルドする場合は、をMicrosoft.WebApplication.targets指定して、インポートを完全にオフにします/p:VSToolsPath=''。これにより、基本的に、次の行の条件が偽になります。

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />


これは、TeamCityでの実行方法です。

ここに画像の説明を入力してください


Visual Studioの「発行」メカニズムを使用する場合は、ビルドターゲットが必要です。これを行うと、コンパイルを続行して完了することができますが、不完全になる可能性があります。
starlocke 2016年

14

Visual Studio 2012を2013に移行する場合は、*。csprojプロジェクトファイルをediorで開きます。
'Project'タグのToolsVersion要素を確認します。

その値を4.0から12.0に変更します

  • から

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" ...
  • <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="12.0" ...

またはmsbuildでビルドする場合は、VisualStudioVersionプロパティを指定するだけです

msbuild /p:VisualStudioVersion=12.0

ソリューションソース


4
/p:VisualStudioVersion=12.0をTFS 2013ビルド定義のMSBuild引数に追加すると(Visual Studio 2013で作成されたソリューションの場合)、うまくいきました。何らかの理由で、パラメーターなしでv11.0フォルダー内のファイルを探します。
Sacha K

3
この解決策は私にとってmsbuild /p:Platform=x86 /p:VisualStudioVersion=12.0
うまくいき

9

msbuildの新しいバージョンにはMicrosoft.WebApplication.targetsが同梱されていないようです。修正するには、csprojファイルを次のように更新する必要があります。

1)Webアプリcsprojを編集します(右クリック)。ビルドツールに関する下部のcsprojのセクションを見つけます。それはそのように見えるはずです。

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

2)VisualStudioVersionタグの下に1つのVSToolsPath行を追加して、次のようにする必要があります。

<PropertyGroup>  
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <!--Add the below line to fix the project loading in VS 2017 -->
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  <!--End -->
</PropertyGroup>  
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />  
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />  
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />  

参照リンク:https : //alastaircrabtree.com/cannot-open-vs-2015-web-project-in-vs-2017/


8

これで十分です。わずか103MB。すべてをインストールしないでください

ここに画像の説明を入力してください


何もインストールせずに、そのフォームにチェックマークを付けるにはどうすればよいですか?
クリスチャン、

5

私はMSコネクトでこれを見つけました:

はい、データベースプロジェクトをビルドするには、ビルドマシンにVisual Studio 2010をインストールする必要があります。これには、Visual Studioの追加ライセンスは必要ありません。

だから、これは私が今持っている唯一のオプションです。


2
リンクが壊れているようです。
2015

2

私の解決策は、ここにいくつかの答えを組み合わせたものです。

ビルドサーバーを確認したところ、Windows7 / NET4.0 SDKが既にインストールされていたため、次のパスを見つけました。

C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v9.0 \ WebApplications \ Microsoft.WebApplication.targets`

ただし、この行では:

<Import Project = "$(MSBuildExtensionsPath)\ Microsoft \ VisualStudio \ v9.0 \ WebApplications \ Microsoft.WebApplication.targets" />

$(MSBuildExtensionsPath)は、パスを持たないC:\ Program Files \ MSBuildに展開されます。

したがって、次のコマンドを使用して、シンボリックリンクを作成しました。

mklink / J "C:\ Program Files \ MSBuild \ Microsoft \ VisualStudio" "C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio"

このようにして、$(MSBuildExtensionsPath)は有効なパスに展開され、アプリ自体で変更は必要ありません。ビルドサーバーでのみ(おそらく、ビルドごとにシンボリックリンクを作成して、この手順が失われないようにし、「文書化」されていることを確認できます) ")。


2

これを追加
/p:VCTargetsPath="C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120"

して修正しました
Build > Build a Visual Studio project or solution using MSBuild > Command Line Arguments


2

私はたくさんの解決策を試しましたが、最終的にこの答えは私にとってうまくいきました:https : //stackoverflow.com/a/19826448/431522

基本的に、Visual Studioディレクトリではなく、MSBuildディレクトリからMSBuildを呼び出す必要があります。

また、スクリプトのコーディングを簡単にするために、パスにMSBuildディレクトリを追加しました。


2

Visual Studio 2017でここに来る人は誰でもいます。同様の問題があり、15.6.1に更新した後、プロジェクトをコンパイルできませんでした。MSBulildツールをインストールする必要がありましたが、それでもエラーが発生しました。

v14.0フォルダをからC:\Program Files (x86)\MSBuild\Microsoft\VisualStudioと同じフォルダにコピーすることで問題を解決でき、v15.0すべてのエラーが解決しました。そのため、私のフォルダー構造は次のようになり、両方のフォルダーに同じコンテンツが含まれています。

ここに画像の説明を入力してください


2

ビルドサーバーの場合のようにMSBuildを使用している場合、私にとってうまくいったのは次のとおりです。

以下を変更します。

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

に:

<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

私のMsbuildコマンドは: *"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" solution.sln /p:Configuration=Debug /p:Platform="Any CPU"*

これが誰かを助けることを願っています。


言及するために、問題のある.csproj、vbprojファイルに変更を加える必要があります。
コリンQ

0

VSTSを使用してプロジェクトをデプロイしようとしている場合、問題は「Hosted VS2017」(または18など)ではなく「Hosted Windows Container」オプションのチェックに関連している可能性があります。

ここに画像の説明を入力してください


0
  • MicrosoftからMSBuildツールをインストールしたら、環境変数でMSBuildパスを定義して、任意のパスから実行できるようにします。
  • notepad ++などのメモ帳エディターで.csprojファイルを編集し、コメント
  • 次の要素を確認します->
    • インポートは必ず1回だけ使用し、機能する方を選択してください。
    • ドライブに次のフォルダーが存在することを確認してください: "C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v14.0"または "C:\ Program Files(x86)でMSBuildターゲットによって参照されているバージョン\ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ WebApplications \ Microsoft.WebApplication.targets "
    • コマンドプロンプトから、次のコマンドを実行して確認します

C:> msbuild "C:\\ DotnetCi.sln" / p:Configuration = Release / p:UseWPP_CopyWebApplication = true / p:PipelineDependsOnBuild = false


0

CI / CDパイプラインでSQL Serverプロジェクトを構築するときにこの問題が発生していました。実際、私はそれをローカルでも持っていて、どうにか解決できませんでした。

私のために働いたのは、MSBuild SDKを使用していたことです。MSBuildSDK.dacpacは、一連のSQLスクリプトからSQL Serverデータ層アプリケーションパッケージ()を作成でき、これは新しいプロジェクトの作成を意味します。しかし、SQL Serverプロジェクトを保持して、Visual StudioのSQL Serverオブジェクトエクスプローラーを介してライブデータベースにリンクできるようにしたいと考えました。これを稼働させるために、次の手順を実行しました。

  1. SQL Serverプロジェクトを.sqlデータベーススクリプトと共に保持しました。
  2. 上記のリンクのガイドラインに従って、.NET Standard 2.0クラスライブラリプロジェクトを作成し、ターゲットフレームワークが.NET Standard 2.0であることを確認しました。
  3. の内容を.csproj次のように設定します。

    <?xml version="1.0" encoding="utf-8"?>
    <Project Sdk="MSBuild.Sdk.SqlProj/1.0.0">
      <PropertyGroup>
        <SqlServerVersion>Sql140</SqlServerVersion>
        <TargetFramework>netstandard2.0</TargetFramework>
      </PropertyGroup>
    </Project>
  4. SQL Server 2019を使用しているため、SQL ServerのバージョンとしてSql140を選択しました。この回答を確認して、使用しているバージョンへのマッピングを確認してください。

  5. ビルド時にSQL Serverプロジェクトを無視して、ローカルでの破損を停止します(Visual Studioではビルドされますが、VSコードでは失敗します)。

  6. これで.sql、ビルド時にファイルがSDKプロジェクト内にあることを確認する必要があります。私は、SQL ServerプロジェクトからSDKプロジェクトにファイルをコピーするCI / CDパイプラインで単純なpowershellルーチンを使用してそれを実現しました。

Copy-Item -Path "Path.To.The.Database.Project \ dbo \ Tables \ *" -Destination(New-item -Name "dbo \ Tables" -Type Directory -Path "Path.To.The.DatabaseSDK.Project \ ")

PS:ファイルは、SDKプロジェクト内のルートまたはフォルダーに物理的に存在する必要があるため.sdk、SQL Serverプロジェクト内のファイルへのリンクは機能しません。理論的には、ビルド前の状態でこれらのファイルをコピーすることは可能であるはずですが、いくつかのあいまいな理由により、これは私にとってはうまくいきませんでした。また.sql、SDKプロジェクトにファイルを配置してSQL Serverプロジェクトにリンクしようとしましたが、SQL Serverオブジェクトエクスプローラーとのリンクが簡単に壊れてしまうため、これも削除することにしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.