作成日: 2019/09/19 最終更新日: 2019/12/04
文書種別
不具合
状況
修正済み
詳細
プロジェクト内でC1.C1Zip.*.dllとC1.Win.C1TrueDBGrid.*.dllの両方が参照設定に追加されているとき、C1.C1Zip.ZipEncoding.Encodingプロパティをコード上で参照あるいは設定しようとすると、コンパイルエラーCS0433が発生します。
回避方法
この問題は2019J v3(4.5.20193.393)で修正されました。
※修正版を適用しない場合の回避方法は以下の通りです。
Reflectionの機能を利用し、参照しているC1Zipアセンブリに対するZipEncoding.Encodingプロパティの値を、直接設定します。
◎サンプルコード(VB)
◎サンプルコード(C#)
※修正版を適用しない場合の回避方法は以下の通りです。
Reflectionの機能を利用し、参照しているC1Zipアセンブリに対するZipEncoding.Encodingプロパティの値を、直接設定します。
◎サンプルコード(VB)
Imports System.Reflection
Imports C1.C1Zip
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'ZipEncoding.Encoding = System.Text.Encoding.Default
' 対応策
Dim t1 As Type = GetType(C1.C1Zip.C1ZipFile)
Dim t2 As Type = t1.Assembly.GetType("C1.C1Zip.ZipEncoding")
Dim p As PropertyInfo = t2.GetProperty("Encoding")
p.SetValue(Nothing, System.Text.Encoding.Default)
Dim dirSrc As String = "..¥..¥_Src"
Dim dirDst As String = "..¥..¥_Dst"
With New C1.C1Zip.C1ZipFile(dirDst & "¥Test01.zip", True)
For Each fn As String In IO.Directory.GetFiles(dirSrc)
.Entries.Add(fn, IO.Path.GetFileName(fn))
Next
End With
End Sub
End Class
Imports C1.C1Zip
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'ZipEncoding.Encoding = System.Text.Encoding.Default
' 対応策
Dim t1 As Type = GetType(C1.C1Zip.C1ZipFile)
Dim t2 As Type = t1.Assembly.GetType("C1.C1Zip.ZipEncoding")
Dim p As PropertyInfo = t2.GetProperty("Encoding")
p.SetValue(Nothing, System.Text.Encoding.Default)
Dim dirSrc As String = "..¥..¥_Src"
Dim dirDst As String = "..¥..¥_Dst"
With New C1.C1Zip.C1ZipFile(dirDst & "¥Test01.zip", True)
For Each fn As String In IO.Directory.GetFiles(dirSrc)
.Entries.Add(fn, IO.Path.GetFileName(fn))
Next
End With
End Sub
End Class
◎サンプルコード(C#)
using System.Reflection;
using C1.C1Zip;
namespace C1Zip_Encoding
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
//ZipEncoding.Encoding = System.Text.Encoding.Default;
// 対応策
Type t1 = typeof(C1.C1Zip.C1ZipFile);
Type t2 = t1.Assembly.GetType("C1.C1Zip.ZipEncoding");
PropertyInfo p = t2.GetProperty("Encoding");
p.SetValue(null, System.Text.Encoding.Default);
string dirSrc = "..¥¥..¥¥_Src";
string dirDst = "..¥¥..¥¥_Dst";
C1ZipFile zip = new C1ZipFile(dirDst + "¥¥Test01.zip");
//zip.Open(dirDst + "¥¥Test01.zip");
//C1ZipFile zip = new C1ZipFile();
//zip.Open(dirDst + "¥¥Test01.zip");
foreach (String fn in System.IO.Directory.GetFiles(dirSrc))
{
zip.Entries.Add(fn, System.IO.Path.GetFileName(fn));
}
}
}
}
using C1.C1Zip;
namespace C1Zip_Encoding
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
//ZipEncoding.Encoding = System.Text.Encoding.Default;
// 対応策
Type t1 = typeof(C1.C1Zip.C1ZipFile);
Type t2 = t1.Assembly.GetType("C1.C1Zip.ZipEncoding");
PropertyInfo p = t2.GetProperty("Encoding");
p.SetValue(null, System.Text.Encoding.Default);
string dirSrc = "..¥¥..¥¥_Src";
string dirDst = "..¥¥..¥¥_Dst";
C1ZipFile zip = new C1ZipFile(dirDst + "¥¥Test01.zip");
//zip.Open(dirDst + "¥¥Test01.zip");
//C1ZipFile zip = new C1ZipFile();
//zip.Open(dirDst + "¥¥Test01.zip");
foreach (String fn in System.IO.Directory.GetFiles(dirSrc))
{
zip.Entries.Add(fn, System.IO.Path.GetFileName(fn));
}
}
}
}
旧文書番号
84498