【覚書】VS Code C#で、外部アプリケーション(dll)を読み込んで、メソッドを実行する手順

未分類

本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^

ただの覚書です

呼び出される側のDLL作成

プロジェクトファイル (.csproj 拡張子) を開きます。

要素を探し、値を Exe から Library に変更します。もし 要素がなければ、 の中に新しく追加してください。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Library</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

dotnet build すると、dllファイルが作成される

dotnet build

リリースビルドにしたければコマンドは以下

dotnet build --configuration Release

外部アプリから参照

dotnet add reference 呼び出したい相手先.csproj

dotnet add reference '/home/user/ドキュメント/project/NewPro/ConsoleApp1/ConsoleApp1.csproj' 
参照 `..\..\NewPro\ConsoleApp1\ConsoleApp1.csproj` がプロジェクトに追加されました。

これにより、ビルド時にライブラリのDLLが自動的にコピーされるようになります。

上記コマンドにて、呼び出し元のプロジェクトファイルCallClass2.csprojにいかが追記されます。

  <ItemGroup>
    <ProjectReference Include="..\..\NewPro\ConsoleApp1\ConsoleApp1.csproj" />
  </ItemGroup>

呼び出したい相手先の名前空間をusingする

using MyDriveLibrary; // ★ ここをクラスライブラリの名前空間に置き換えてください

dllを参照したいんですけど

非推奨だけど呼び出し元のプロジェクトファイルに、以下を追記する方法もあります。

<ItemGroup>
  <Reference Include="ConsoleApp1">
    <HintPath><DLLファイルへの絶対パスまたは相対パス></HintPath>
  </Reference>
</ItemGroup>

クリーン

何度も、ビルドなどをあれこれ試していると、キャッシュの影響でうまくビルドが通らなくなることがあります。そのときには、プロジェクトファイルのある場所で、以下のコマンドを実行すると、キャッシュが削除されます。

今回の例では、呼び出し元、呼び出し先のプロジェクトのあるディレクトリで実行すると良いです。

dotnet clean

呼び出し先のプロジェクトの更新が反映されない

dllの元になるコード csファイルを更新しています。参照元のコードから、新しいメソッドを呼び出そうとしても、参照先がないと表示されてしまいます。

さらに、ターミナル上で dotnet run すると、ちゃんと実行が通ってしまう。コード上のつじつまはあっているのに、vs codeで認識できていない状況が生まれました。

dotnet clean しても状況は変わりません。

コマンドパレットを開き、開発者:ウィンドウの再読込 することで解決しました。

コードを自動整形したい

右クリックして ドキュメントをフォーマット すると、自動整形されます。

C#のコード上で右クリックすると、現れるメニュの中から選択します。

タイトルとURLをコピーしました