[解決済み] .NET Coreプロジェクトのバージョン番号を設定する - CSPROJ - JSONプロジェクトではない
質問
この質問は、以下のものに非常によく似ています。 .NET Coreプロジェクトのバージョン番号の設定 と同じですが、同じではありません。執筆時点の最新安定版(1.1)とVS2017を使用して、.NET CoreはJSONベースのプロジェクトファイルからCSPROJファイルへと切り替わりました。
私がやろうとしていることは、CI 環境をセットアップして、そこで 何か を修正し、正しいバージョン番号でビルドをスタンプできるようにしたいのです。
私はこのように属性を使用する場合、古い(SharedAssemblyInfo.csのトリック)。
[assembly: AssemblyFileVersion("3.3.3.3")]
[assembly: AssemblyVersion("4.4.4.4")]
プロジェクトのどこかで
CS0579 - Duplicate 'System.Reflection.AssemblyFileVersionAttribute'
そして
CS0579 - Duplicate 'System.Reflection.AssemblyVersionAttribute'
ビルド時にエラーが発生します。
少し掘り下げてみると、ビルド中に生成される(ビルドする前には存在しない)以下のようなファイルが
\obj\Debug\netcoreapp1.1
:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("TestApplication")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyDescriptionAttribute("Package Description")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.1.99.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.1.99")]
[assembly: System.Reflection.AssemblyProductAttribute("TestApplication")]
[assembly: System.Reflection.AssemblyTitleAttribute("TestApplication")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.1.99.0")]
// Generated by the MSBuild WriteCodeFragment class.
質問 - このビットはどうすればいいのでしょうか?
だから私はこれが何らかの形でプロジェクトのプロパティ 'パッケージページ'に入力された値から生成されなければならないことを見ることができますが、私は私のCIマシンでこれらの値を変更する正しい方法がわからないのです。
理想的には、私の(Jenkins)CIスクリプトでこれらの情報をすべて指定できるようにしたいのですが、バージョン番号を設定できるだけで落ち着きます。
EDIT - 詳細情報
最初の回答を読んだ後、私はサービスとNuGETパッケージの両方を作成していることを明確にしたいと思いました - そして私は、1つのファイルを更新するだけで済む古いJSONプロジェクトのような、すべてのバージョン管理の1つの方法を持つことを望みます。
アップデイト 私はCSPROJファイルへの変更をスクリプトで行うつもりですが、私の意見では、私が変更する必要があるセクションは次のように見えるので、かなり厄介です...。
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
<Version>1.0.7777.0</Version>
<AssemblyVersion>1.0.8888.0</AssemblyVersion>
<FileVersion>1.0.9999.0</FileVersion>
<Company>MyCompany</Company>
<Authors>AuthorName</Authors>
<Product>ProductName</Product>
<Description />
<Copyright>Copyright © 2017</Copyright>
</PropertyGroup>
この問題は、複数の 'PropertyGroup' 要素があることで、他の要素はラベル付けされているように見えます。
私は、パッケージの詳細が常に入力されているという前提で作業しています。値タグがない場合、どの PropertyGroup 要素に値を挿入するか (そして、これは重要であると思われるため、順序も)、明確なアイデアがありません。
私はこれより良い解決策をまだ持っています!
更新: 誰かがこの質問を重複している可能性があるとしてマークした後 ( Visual Studio 2017 (.NET Core) での自動バージョン管理について。 ) - 私はこの質問を前に見ていなかったし、今それを読むと、私がバージョン番号を設定したいだけではないことを除いて、ほとんど同じように思えます。また、この質問に対する回答は私の問題を解決していません - 私が質問で尋ねたことを尋ねるだけです。私の質問に対する回答は、まさに私の問題を解決するために必要な回答です。したがって、他の質問が最初に来て、同じように見えますが、それは全く私を助けません。多分、modは助けることができる?
解決する方法は?
コマンドラインから任意のプロパティをオーバーライドするためには
/p:PropertyName=Value
を引数として
dotnet restore
,
dotnet build
と
dotnet pack
.
現在、Version構成はこのように動作します。
もし
Version
が設定されていない場合は
VersionPrefix
(未設定の場合、デフォルトは 1.0.0) を使い、存在すれば
VersionSuffix
.
他のすべてのバージョンは、デフォルトで
Version
になります。
ですから、例えば以下のように設定することができます。
<VersionPrefix>1.2.3</VersionPrefix>
を設定し
dotnet pack --version-suffix beta1
を生成するために
YourApp.1.2.3-beta1.nupkg
(を生成します(バージョンサフィックスを適用させたいプロジェクト参照がある場合は
dotnet restore /p:VersionSuffix=beta1
を呼び出す必要があります - これはツールの既知のバグです)。
もちろん、カスタム変数も使うことができます。 このGitHubの課題 をご覧ください。
サポートされるアセンブリ属性の完全なリファレンスについては、ビルドロジックのソースコードを参照することをお勧めします。
ここで
(で囲まれた値は
$()
で囲まれた値が使用されるプロパティです)。
そして、もうソースの話になってしまいますが
この
はバージョンと他のいくつかのプロパティを構成するロジックです。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み] .NET String.Format()で数値の千の位にカンマを追加する
-
[解決済み] .NET 4.0 プロジェクトで .NET 2.0 混合モード アセンブリを参照するために必要な「追加設定」は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み] Visual Studio 2017 (.NET Core)での自動バージョニング