普段、ASP.netを使っていないWebシステムで、C#のdllを呼び出す必要が出てきたけど、VisualStudioを使うほどではないので、テキストエディタでできる範囲でasp.netページを作った話。
Javaだと、JNIでJavaからC++を経由してC#を呼び出すことはできるみたいだけれども、動作保証外になりそうだしそこまでしたくはない。
Javaから呼び出すだけとは限らないので、使ったことないけど、そこだけasp.netページにしようと思った。
幸い、Windows、IISサーバは使えるけど、VisualStudioまで用意するのはメンドくさい。テキストエディタだけで動かしたい。
最近は、ASP.NET Coreらしいけど、NET Frameworkをサポートしていなくて,nugetから使う必要があるとのことでメンドくさい。
ASP.NET Coreに、手持ちのライブラリを参照させる(1)
1ページだけ動けばいいので、ASP.net MVCのことは考えない。
ASP.NETからASP.NET Coreに移行した話
1ファイルだけで直接出力する場合
<%@ Page Language="C#" %>
<html>
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<h3>
<%="Hello World" %>
</h3>
</form>
</body>
</html>
1ファイルだけで、コード部分とHTMLを分離して特定のしたラベルに出力する場合
<%@ Page Language="C#" %>
<script runat="server">
protected void Page_Load(Object source, EventArgs e) {
MyLabel.Text = "Hello World!";
}
</script>
<HTML>
<BODY>
<asp:Label runat="server" id="MyLabel" />
</BODY>
</HTML>
HTML部分とコード部分を2ファイルにわける場合
呼び出したいdllは実行ファイルと同じディレクトリにbinフォルダを作ってその中に入れる。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test3.aspx.cs" Inherits="test3.CodeFile" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lbl" runat="server" Text="default" />
</div>
</form>
</body>
</html>
using System;
using System.IO;
using XXX.xxx; // 呼び出したい dllの名前空間
namespace test3 {
public partial class CodeFile : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
XXXXX xx = new XXXXX(); // 呼び出したいdllの呼び出し情報
lbl.Text = "Hello World!";
}
}
}