none
VB2015 Silverlight ライブラリのReleaseビルドができない RRS feed

  • 質問

  • お世話になります。
    Microsoft Visual Studio Professional 2015
    Version 14.0.25431.01 Update 3
    Win10  Microsoft .NET Framework 4.7.02053
    VisualStudio の認証(サインイン)済

    この環境で新規のプロジェクトとして
    VisualBasic Silverlight 5.0 のクラスライブラリを選択しました。
    Class1.vbが用意された空のライブラリが生成されました。
    このまま Debugビルドを行うと正常終了となりますが
    Releaseに切り替えてビルドを行うと以下のエラーが発生してビルドすることができません。

    重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
    エラー BC30002 型 'Global.Microsoft.VisualBasic.ApplicationServices.ApplicationBase' は定義されていません。
    エラー BC30002 型 'Global.Microsoft.VisualBasic.ApplicationServices.User' は定義されていません。
    エラー BC30002 型 'Global.Microsoft.VisualBasic.Devices.Computer' は定義されていません。
    エラー BC30002 型 'Global.Microsoft.VisualBasic.MyServices.Internal.ContextValue' は定義されていません。
    エラー BC30002 型 'Global.System.ComponentModel.Design.HelpKeyword' は定義されていません。

    なぜReleaseビルドが出来ないのかどうしたらよいのか皆目見当がつかない為、
    何か情報がありましたらご教示お願いいたします。

    ※本来は、同じマシンの別Silverlightアプリケーションプロジェクトで作成していて動作確認ができたので
    リリースビルドを行ったところ上記エラーが出たため、上記のプロジェクト新規作成で試したところエラー
    が出るため質問させていただきました。

    2017年8月1日 9:05

回答

  • コンパイルオプションに/nostdlibがついている場合は_MyType="Empty"というカスタム定数が必要らしいのですが、リリースビルドの設定で抜けてるみたいです。

    プロジェクトのプロパティ->コンパイル->詳細コンパイルオプション->カスタム定数を

    SILVERLIGHT=1, _MYTYPE="Empty"

    とする。

    あるいは、プロジェクトファイル(*.vbproj)のなかのCoditionがRelease|AnyCPUになっている箇所に、以下のようにMyTypeタグを追加してみてください。

      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        <DebugType>pdbonly</DebugType>
        <DefineDebug>false</DefineDebug>
        <DefineTrace>true</DefineTrace>
        <NoStdLib>true</NoStdLib>
    
        <!-- これを追加 -->
        <MyType>Empty</MyType>
    
        <NoConfig>true</NoConfig>
        <Optimize>true</Optimize>
        <OutputPath>Bin\Release</OutputPath>
        <DocumentationFile>SilverlightClassLibrary2.xml</DocumentationFile>
        <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
        <DefineConstants>SILVERLIGHT=1</DefineConstants>
      </PropertyGroup>


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2017年8月1日 10:09

すべての返信

  • コンパイルオプションに/nostdlibがついている場合は_MyType="Empty"というカスタム定数が必要らしいのですが、リリースビルドの設定で抜けてるみたいです。

    プロジェクトのプロパティ->コンパイル->詳細コンパイルオプション->カスタム定数を

    SILVERLIGHT=1, _MYTYPE="Empty"

    とする。

    あるいは、プロジェクトファイル(*.vbproj)のなかのCoditionがRelease|AnyCPUになっている箇所に、以下のようにMyTypeタグを追加してみてください。

      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
        <DebugType>pdbonly</DebugType>
        <DefineDebug>false</DefineDebug>
        <DefineTrace>true</DefineTrace>
        <NoStdLib>true</NoStdLib>
    
        <!-- これを追加 -->
        <MyType>Empty</MyType>
    
        <NoConfig>true</NoConfig>
        <Optimize>true</Optimize>
        <OutputPath>Bin\Release</OutputPath>
        <DocumentationFile>SilverlightClassLibrary2.xml</DocumentationFile>
        <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
        <DefineConstants>SILVERLIGHT=1</DefineConstants>
      </PropertyGroup>


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2017年8月1日 10:09
  • 早々にご回答ありがとうございました。
    おかげさまで解決することができました。

    .vbprojの「PropertyGroup 'Release|AnyCPU'」にMyTypeタグを追加する方法で対処することにしました。

    2017年8月2日 1:05