質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

3回答

6377閲覧

ソースが同じソフトを、アセンブリ情報を変えてコンパイル・セットアップの作成をする

yrmcj

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/04/01 00:37

編集2016/04/01 01:37

Visual Studioのプロジェクトでソースは共通、
起動時の引数によって動作が一部変わるというソフトウェアを作成しています。

実行環境では、ソース自体は同一ですが、
別のソフトウェアとしてインストールできるようにしたいと考えています。

そこで、ソースは共通のまま
.Exeファイル名
アセンブリ情報(タイトルや製品名など)を変えて、
コンパイルし、インストーラーを作成したいと考えています。

今後、このソフトウェアはソースは共通のまま、
バージョンアップしていくことが予想されます。

上手な作成方法・管理方法があれば教えてください。
よろしくお願いします。

補足
編集・追記依頼ありがとうございます。不明確だった点お詫びします。

「起動時の引数によって動作が変わる」のは、
開発時、同一のソースで一部別の動作(具体的にはフォームのタイトルや、
フォームの一部要素の表示非表示)を実現するため
以下のような設計をしていました。

sample.exe aaa (フォームのタイトルがaaaと表示、フォームのテキストボックス全て表示)
sample.exe bbb (フォームのタイトルがbbbと表示、フォームのテキストボックス一部非表示)

これを出荷時には、
a.exe、アセンブリ情報(タイトル「aaa」、製品名「aaaシステム」)
b.exe 同(タイトル「bbb」、製品名「bbbシステム」)

として作成したいということを意図しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuba

2016/04/01 00:53

「起動時の引数によって動作が変わる」のと「アセンブリ情報を変えて別々にコンパイル」のつながりがわかりません。そこのところの関係をご説明いただけますか?
coco_bauer

2016/04/01 01:23

「起動時の引数」とは何ですか? インストール時に設定される何らかの情報があって、それを起動時に使うというようなニュアンスを感じるのですが、それを起動時の引数とは言わないですよね?
guest

回答3

0

ベストアンサー

こんにちは。

単純なプロジェクトプロパティの変更のみであれば、リネームしたプロジェクトファイルを2つ用意することでコンパイル情報を変更することが出来ますが、アセンブリ情報を変更するとなるとAssemblyInfoにも差分が発生します。

Xamarinなどで採用されているように、共通部分のみを共通プロジェクト(DLL)として用意し、アプリケーションエントリポイントを含む実行ファイルプロジェクトはそれぞれ用意するのが現実的だと思います。

起動時の引数のみを変更したいのであれば、アプリケーション自体は共通として、セットアッププロジェクト側のカスタムスクリプトでショートカットを編集することで対応できるかもしれません。

投稿2016/04/01 00:49

編集2016/04/01 00:51
Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yrmcj

2016/04/01 23:12

Tak1waさんの教えてくださった方法に近い「プロジェクトを参照」する方法を採用し、 入り口に別プロジェクトを作成し、エントリポイントで呼び出すことにしました。 正しくは共通部分を取り出し(本件ではほぼ全て)DLLにする方法だと思うのですが、 すでにアプリケーションとして完成してしまっているので、この方法にしました。 ありがとうございます。
guest

0

リリース(出荷・納品?)後の保守(マイナーアップデートなど)の方法によっても管理方法はさまざまかと思います。

まずは、ソースのバージョン管理ツール(SVNやGitなど)による管理をお勧めします。
そのうえで、プロジェクトをaとb2つに分け、共通の部分と個別になる部分を明確に分けて管理します。

投稿2016/04/01 04:41

MasafumiOkamoto

総合スコア254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yrmcj

2016/04/01 23:19

Gitは導入しているのですが、MasafumiOkaotoさんが教えてくださったような 効果的な活用ができるよう勉強していきたいと思います。ありがとうございます。
guest

0

こんにちは。

もしかすると、リンクとして追加することで出来るかもしれません。

この機能は、各プロジェクト・ルート・フォルダの「外側」にあるファイルを自分のプロジェクトへ「コピー」することなく追加できます。
試しに、WindowsFormsApplication1とWindowsFormsApplication2を作り、WindowsFormsApplication2のForm1.csとProgram.csを削除して、WindowsFormsApplication1のForm1.csとProgram.csをリンクとして追加することで、WindowsFormsApplication2でWindowsFormsApplication1のソースをその場にあるままで使うことができました。アセンブリ情報はそれぞれのプロジェクトで設定できるようです。
Visual Studio 2015 update1でやってみました。

軽くやってみただけですので、何か問題がでる可能性はありますが。

投稿2016/04/01 01:28

編集2016/04/01 01:29
Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yrmcj

2016/04/01 23:15

今回は共通に使うフォームやクラスが多数あり Chironianさんの教えてくださった方法の採用は見送りましたが、 一部を共通とする場合には役立ちそうですね。 勉強になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問