プロが教えるわが家の防犯対策術!

C#ソースをCSCファイルにてコンパイル時,アセンブリ参照不足について

 当方,C#を勉強中のものです。Visual Studioにて、参照チェック項目を追加して、'SHDocVw' とVBSのInputを使用したプログラムを作っています。
 とある事情でVisual Studioを使わずにコンパイルする必要があり、ソースコードを自分で一つにまとめてCSC.exeにてコンパイルした所、以下のようなエラーとなりました。
 ソースコードにてアセンブリ参照を追加する方法をご教授願います。

Program.cs(56,26): error CS0246: 型または名前空間名 'SHDocVw' が見つかりませんでした。using
ディレクティブまたはアセンブリ参照が不足しています。
Program.cs(71,49): error CS0103: 名前 'SHDocVw' は現在のコンテキスト内に存在しません。
Program.cs(419,49): error CS0234: 型または名前空間名 'Interaction' は名前空間 'Microsoft.VisualBasic'
に存在しません。アセンブリ参照が不足しています。

A 回答 (1件)

自分の環境の場合、


C:\csharp\HelloWorld.cs と以下ソースがあるとして
//==================
using System;
using SHDocVw;
namespace HelloWorld
{
class Hello
{
static void Main()
{
Console.WriteLine("Hello World!");
Microsoft.VisualBasic.Interaction.InputBox("Hoge");
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
//=====================
* shdocvw.dllがあるC:\Windows\System32にはデフォルトでパスが通っている
* Windows 10 SDKをインストールしており、
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\tlbimp.exe
が存在していました。
最初の一回だけ、
cd C:\csharp
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\tlbimp.exe" /namespace:SHDocVw shdocvw.dll

としたところ、
C:\csharp\SHDocVw.dllが生成されました。以後、出てくるSHDocVw.dllはこちらのものであってC:\Windows\System32\shdocvw.dllではありません。

次に

cd C:\csharp
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" /reference:Microsoft.VisualBasic.dll /reference:SHDocVw.dll HelloWorld.cs

とやったところ、
C:\csharp\HelloWorld.exeが生成され、

ここで
HelloWorld.exe
したら、実行できました。まぁ調べるのが面倒だったので、ライブラリが参照されているか確かめただけでSHDocVwの機能は使ってみていないのですが。
#不必要にcdしているのは後で文句言われないようにわざとやってます。
    • good
    • 0
この回答へのお礼

ありがとう御座います!コンパイル成功しました。ただ・・・出来ればさらなるわがままを聞いて頂ければうれしいです。

「とある事情」とは会社のパソコンなのですが、確認したらSDKなるものが入っていません!
 試しにlib:c:\windows\system32を追加しても駄目でした。
 こんな環境ですがなんとかなるでしょうか?
(会社PCへは、テキストデータしか持ち込めません。)

お礼日時:2018/05/02 22:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています