C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

同じソリューションでASPDLLとWinFormDLLの共存

[トピック内 13 記事 (1 - 13 表示)]  << 0 >>

■102649 / inTopicNo.1)  同じソリューションでASPDLLとWinFormDLLの共存
  
□投稿者/ ded (6回)-(2023/11/30(Thu) 17:20:27)

分類:[.NET 全般] 

■環境
・VS2022 Pro 17.8.2
・Win10 Pro 22H2

■ソリューション内プロジェクト
@(exe)VB Framework 4.7.2 ※Bをプロジェクト参照、その他NuGet参照あり
A(web)C# Framework 4.6.2 ※Bをプロジェクト参照、その他NuGet参照あり、WebForm/Web API
B(dll)C# Framework 4.6.2 ※NuGet参照あり

■事象
・B共通DLL内のフォームに、共通フォーム(WinForm)あり
・@から継承フォームを利用したら、デザインで下記エラーメッセージ1が表示される。
・@Bで継承フォームの新規作成をしたら、エラーメッセージ2が表示される。(ただしOKで継続可能だが、デザインは不可)

■エラーメッセージ1
ファイル内にデザインできるクラスがないため、このファイルのデザイナーを表示できませんでした。 ファイルの以下のクラスがデザイナーで見つかりました: Form1 --- 基本クラス 'System.Void' をデザインできません。

■コールスタック
場所 System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)
場所 System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
場所 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
場所 System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)

■エラーメッセージ2
---------------------------
アセンブリの読み込みエラー
---------------------------
アセンブリ '<アセンブリ名A>' を読み込めません。ファイルが有効な .Net Framework アセンブリであることを確認してください。
---------------------------
OK
---------------------------

■対処
・各プロジェクトのクリーン
・各プロジェクトのbin/objフォルダの削除
・.vsの削除
・VS2022 17.8.1にロールバック
・VS2022のアンインストール&再インストール

■疑問
・System.Voidが基本クラス? 構造体だった気がする
・Windows Formなのに、なんでASP.NETのDLLを読もうとする?
・コンパイルはDEBUG/RELEASE共に正常、@の実行も正常、B内コード実行も正常(DBクラス、継承フォーム等)

■勘違い
・途中まで<アセンブリ名A>ではなく、<アセンブリ名B>だと勝手に誤解

■その他
・近々では17.8.1→17.8.2にアップデート、ローカルGitサーバを建ててTortoiseGit等をイジイジ(当該ソリューションはGit関係未実施)
・「Developer Community」の方が適切だとは思いますが、英語が…
よろしくお願いします

引用返信 編集キー/
■102650 / inTopicNo.2)  Re[1]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ WebSurfer (2823回)-(2023/11/30(Thu) 17:53:11)
No102649 (ded さん) に返信

そもそも何を作りたいのですか? ASP.NET Web Forms? ASP.NET MVC?
引用返信 編集キー/
■102653 / inTopicNo.3)  Re[2]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ ded (7回)-(2023/12/01(Fri) 09:06:48)
No102650 (WebSurfer さん) に返信
> ■No102649 (ded さん) に返信
>
> そもそも何を作りたいのですか? ASP.NET Web Forms? ASP.NET MVC?

(WinForm)フォームデザインで、親クラスが正しく読み取れないを解決したいです。

>■エラーメッセージ1
>ファイル内にデザインできるクラスがないため、このファイルのデザイナーを表示できませんでした。 ファイルの以下のクラスがデザイナーで>見つかりました: Form1 --- 基本クラス 'System.Void' をデザインできません。

よろしくお願いします。
引用返信 編集キー/
■102654 / inTopicNo.4)  Re[3]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ WebSurfer (2825回)-(2023/12/01(Fri) 09:38:08)
No102653 (ded さん) に返信

>>そもそも何を作りたいのですか? ASP.NET Web Forms? ASP.NET MVC?
>
> (WinForm)フォームデザインで、親クラスが正しく読み取れないを解決したいです。

そういう説明では自分には何がどうなっているのか全く分からないです。

Windows Forms アプリを作っているのですか? それ何に何故 ASP.NET 関係のライブラリを
使おうとしているのですか? 何をどう読もうとしているのか具体的な情報を提示できませ
んか?

今提供されている情報では、Microsoft の想定外のことをして、想定外のことが起こってい
るようにしか自分には思えないです。




引用返信 編集キー/
■102655 / inTopicNo.5)  Re[4]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ ded (8回)-(2023/12/01(Fri) 11:14:39)
No102654 (WebSurfer さん) に返信
> Windows Forms アプリを作っているのですか? それ何に何故 ASP.NET 関係のライブラリを
> 使おうとしているのですか? 何をどう読もうとしているのか具体的な情報を提示できませ
> んか?

@(exe)VB Framework 4.7.2 (入力のみ)Webページ(LAN内、データ管理)
A(web)C# Framework 4.6.2 (入力のみ/出力はjsonで取得)Webページ(DNZ) <- json -> (入出力)WebAPIでデータ(APサーバ)
B(dll)C# Framework 4.6.2 @Aの共通DLL(DBアクセスクラス、拡張メソッド等、他プロジェクトでも使用する共通基盤)

基本的に@Aを作成しています。
今回、@のWinFormで継承フォームデザインが表示されなくなった事です。

今回トラブっているのはVS2022 17.7.xまでは出来ていたソリューション構造ですので、
「Microsoft の想定外」というイメージは無いです。
正確に言うと「エラーメッセージ2」でAのWeb用のDLLを参照しに行っているのが原因なのか、
System.Voidが読めないのが原因なのか特定できないのです。

よろしくお願いします。
引用返信 編集キー/
■102656 / inTopicNo.6)  Re[5]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ WebSurfer (2826回)-(2023/12/01(Fri) 11:55:19)
No102655 (ded さん) に返信

> 今回トラブっているのはVS2022 17.7.xまでは出来ていたソリューション構造ですので、

それ初めて聞きました。そういうことは最初の質問に書いておきましょう。

ただ、それを聞いても自分には分かりません。他に何か変えたけど質問者さんの記憶に
ないのではと勝手に想像してます。

もう一度お願いしますが、何をどう読もうとしているのか具体的な情報を提示できませ
んか?
引用返信 編集キー/
■102657 / inTopicNo.7)  Re[6]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ ded (9回)-(2023/12/01(Fri) 14:14:40)
2023/12/01(Fri) 14:22:36 編集(投稿者)

No102656 (WebSurfer さん) に返信
>>今回トラブっているのはVS2022 17.7.xまでは出来ていたソリューション構造ですので、
> それ初めて聞きました。そういうことは最初の質問に書いておきましょう。

あー確かに明記はしていませんでした。すみません。

> ただ、それを聞いても自分には分かりません。他に何か変えたけど質問者さんの記憶に
> ないのではと勝手に想像してます。

git関係を別ソリューションで行ったので、それも可能性はあります。
>・近々では17.8.1→17.8.2にアップデート、ローカルGitサーバを建ててTortoiseGit等をイジイジ(当該ソリューションはGit関係未実施)
現在は再インストールした関係で17.8.2です。

> もう一度お願いしますが、何をどう読もうとしているのか具体的な情報を提示できませ
> んか?

Freamework 4.6.2(C#)で作成したWinFormを継承して、Framework 4.7.2(VB)でフォームデザイナーの利用です。

この手の問題はよく記事がありますが、今回いつもと違うメッセージが出ています。
「基本クラス 'System.Void' をデザインできません。」が普通じゃないと思っています。

>ファイル内にデザインできるクラスがないため、このファイルのデザイナーを表示できませんでした。 ファイルの以下のクラスがデザイナーで見つかりました: Form3 --- 基本クラス 'System.Void' をデザインできません。


引用返信 編集キー/
■102658 / inTopicNo.8)  Re[7]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ WebSurfer (2827回)-(2023/12/01(Fri) 14:53:33)
No102657 (ded さん) に返信

> Freamework 4.6.2(C#)で作成したWinFormを継承して、Framework 4.7.2(VB)でフォームデザイナーの利用です。

コピペすれば問題を再現できる必要最低限のコードを提示できませんか?

提示してもらえれば、それを自分の環境 Windows 10 22H2, Visual Studio 2022 v17.8.2 で試してみて
結果を書きます。
引用返信 編集キー/
■102659 / inTopicNo.9)  Re[7]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ 魔界の仮面弁士 (3728回)-(2023/12/01(Fri) 15:30:30)
2023/12/01(Fri) 15:34:24 編集(投稿者)

No102657 (ded さん) に返信
> 「基本クラス 'System.Void' をデザインできません。」が普通じゃないと思っています。

エラーメッセージで検索すると、何件かヒットしますね。
それぞれ前提条件が異なるので、今回の件に該当するかは別問題ですが。
https://supportcenter.devexpress.com/ticket/details/t666675/the-base-class-system-void-cannot-be-designed
https://learn.microsoft.com/en-us/answers/questions/515585/getting-a-design-time-error-that-appears-to-have-n

ひとまずソリューションを閉じて、\bin フォルダーと \obj フォルダーを削除してからリビルドしてみるという話があるぐらいで、根本的な情報は見当たらないですね。
あとはビルドを詳細モードにして、依存関係を追跡していくしかなさそうです。
引用返信 編集キー/
■102660 / inTopicNo.10)  Re[7]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ WebSurfer (2828回)-(2023/12/01(Fri) 15:47:57)
No102657 (ded さん) に返信

> Freamework 4.6.2(C#)で作成したWinFormを継承して、Framework 4.7.2(VB)でフォームデザイナーの利用です。

・・・というのを自分の環境 Windows 10 22H2, Visual Studio 2022 v17.8.2 でやってみました
が、「今回、@のWinFormで継承フォームデザインが表示されなくなった」ということはなくて、
以下の画像のように期待通りデザイナは使えます。

http://surferonwww.info/BlogEngine/image.axd?picture=2023%2f12%2fwinfroms.png

なので、やはり、Microsoft の想定外のことをして、想定外のことが起こっているようにしか自分に
は思えないです。
引用返信 編集キー/
■102661 / inTopicNo.11)  Re[4]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ ded (10回)-(2023/12/01(Fri) 16:13:12)
No102658 (WebSurfer さん) に返信
>>Freamework 4.6.2(C#)で作成したWinFormを継承して、Framework 4.7.2(VB)でフォームデザイナーの利用です。
> 
> コピペすれば問題を再現できる必要最低限のコードを提示できませんか?

現在、Currentチャネルの17.7.7を再インストール中です。

※迷惑投稿扱いされるのでソリューションとプロジェクトファイルは重要なところだけにします。

***************************************************************継承フォームテスト.sln
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34322.80
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1\ClassLibrary1.csproj", "{1931C0E6-667F-4087-A3A9-E9ABBF51D30D}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "WindowsApp1", "WindowsApp1\WindowsApp1.vbproj", "{C3097A00-FE85-465F-BB1F-2C86F506C547}"
EndProject

***************************************************************ClassLibrary1.csproj
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{1931C0E6-667F-4087-A3A9-E9ABBF51D30D}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>ClassLibrary1</RootNamespace>
    <AssemblyName>ClassLibrary1</AssemblyName>
    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
  </PropertyGroup>

***************************************************************Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ClassLibrary1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}

***************************************************************Form1.Designer.cs
namespace ClassLibrary1
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.statusStrip1 = new System.Windows.Forms.StatusStrip();
            this.SuspendLayout();
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(111, 125);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(219, 92);
            this.button1.TabIndex = 0;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;
            // 
            // statusStrip1
            // 
            this.statusStrip1.Location = new System.Drawing.Point(0, 428);
            this.statusStrip1.Name = "statusStrip1";
            this.statusStrip1.Size = new System.Drawing.Size(800, 22);
            this.statusStrip1.TabIndex = 1;
            this.statusStrip1.Text = "statusStrip1";
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(800, 450);
            this.Controls.Add(this.statusStrip1);
            this.Controls.Add(this.button1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.StatusStrip statusStrip1;
    }
}

***************************************************************WindowsApp1.vbproj
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{C3097A00-FE85-465F-BB1F-2C86F506C547}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <StartupObject>WindowsApp1.My.MyApplication</StartupObject>
    <RootNamespace>WindowsApp1</RootNamespace>
    <AssemblyName>WindowsApp1</AssemblyName>
    <FileAlignment>512</FileAlignment>
    <MyType>WindowsForms</MyType>
    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <Deterministic>true</Deterministic>
  </PropertyGroup>

***************************************************************Form2.Designer.vb
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Form2
    Inherits ClassLibrary1.Form1

    'フォームがコンポーネントの一覧をクリーンアップするために dispose をオーバーライドします。
    <System.Diagnostics.DebuggerNonUserCode()> _
    Protected Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing AndAlso components IsNot Nothing Then
            components.Dispose()
        End If
        MyBase.Dispose(disposing)
    End Sub

    'Windows フォーム デザイナーで必要です。
    Private components As System.ComponentModel.IContainer

    'メモ: 以下のプロシージャは Windows フォーム デザイナーで必要です。
    'Windows フォーム デザイナーを使用して変更できます。  
    'コード エディターを使って変更しないでください。
    <System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        components = New System.ComponentModel.Container
    End Sub

End Class

***************************************************************Form2.vb
Public Class Form2

End Class


引用返信 編集キー/
■102662 / inTopicNo.12)  Re[8]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ ded (11回)-(2023/12/01(Fri) 16:31:03)
No102659 (魔界の仮面弁士 さん) に返信
> 2023/12/01(Fri) 15:34:24 編集(投稿者)
> ひとまずソリューションを閉じて、\bin フォルダーと \obj フォルダーを削除してからリビルドしてみるという話があるぐらいで、根本的な情報は見当たらないですね。
> あとはビルドを詳細モードにして、依存関係を追跡していくしかなさそうです。

ビルドは正常に完了して、起動も表示も問題ないのです。
VSのIDE側じゃないか?と思っています。

---------------------------
■102660 (WebSurfer さん) に返信
ごめんなさい。proxyではじかれちゃいました。

---------------------------
追記
先ほどの投稿で書いたVS2022 Pro 17.7.7ですと、
・先ほどの最小構成
・問題のソリューション
共に、正常に表示できました。

Developer Community行きが正解ですかね...
とりあえず解決なのですが、VSのバージョンアップが出来ないのと、
結果を知りたいので数日だけ「解決済み」のチェックを残しておきます。

よろしくお願いします。
引用返信 編集キー/
■102663 / inTopicNo.13)  Re[9]: 同じソリューションでASPDLLとWinFormDLLの共存
□投稿者/ WebSurfer (2829回)-(2023/12/01(Fri) 16:59:57)
No102662 (ded さん) に返信

> とりあえず解決なのですが、VSのバージョンアップが出来ないのと、

最新版 17.8.2 でも問題ないですよ。前のレスで、

> 自分の環境 Windows 10 22H2, Visual Studio 2022 v17.8.2 でやってみました
> が、「今回、@のWinFormで継承フォームデザインが表示されなくなった」ということはなくて、
> 以下の画像のように期待通りデザイナは使えます。

と言ったのに・・・

Microsoft の想定外のことをして、想定外のことが起こっているようにしか自分に
は思えないです。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ