本文介绍了找不到方法:'System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid)'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我花了很多时间在我的开发箱上编写这个程序,在将它移到我们的生产箱后,我收到以下错误.仅供参考,我无法控制已安装的内容和可以安装的内容,我该如何进行此操作?在两台计算机上的两个框架下,我们都有 v1.0.3705、v1.1.4322、v2.0.50727、v3.0、v3.5、4.0.30319.我用来创建应用程序的程序是 Visual Studio 2013 Pro.

I spent a good deal of time writing this program on my dev box, after moving it to our production boxes I get the error below. Just an FYI I don't have any control over what is installed and what can be installed, how can I make this work? Under both framework on both computers we have v1.0.3705, v1.1.4322, v2.0.50727, v3.0, v3.5, 4.0.30319. Also the program I used to create the app is Visual Studio 2013 Pro.

谢谢

有关调用即时的详细信息,请参阅此消息的末尾(JIT) 调试而不是这个对话框.

***** 异常文本 ******* System.MissingMethodException: 方法未找到:'System.TypeSystem.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid)'.在 C_Sharp_version.Form1.button4_Click(Object sender, EventArgs e)
在 System.Windows.Forms.Control.OnClick(EventArgs e) 在System.Windows.Forms.Button.OnClick(EventArgs e) 在System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) 在System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons按钮,Int32 点击)在System.Windows.Forms.Control.WndProc(Message& m) atSystem.Windows.Forms.ButtonBase.WndProc(Message& m) atSystem.Windows.Forms.Button.WndProc(Message& m) atSystem.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m) 在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32msg, IntPtr wparam, IntPtr lparam)

***** Exception Text ******* System.MissingMethodException: Method not found: 'System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid)'. at C_Sharp_version.Form1.button4_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

***** 加载的程序集******* mscorlib汇编版本:4.0.0.0Win32 版本:4.0.30319.239 (RTMGDR.030319-2300)代码库:file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll---------------------------------------- C 夏普版汇编版本:1.0.0.0Win32 版本:1.0.0.0代码库:file:///gordonc$/Desktop/C%20Sharp%20version%20(2).exe---------------------------------------- System.Windows.Forms汇编版本:4.0.0.0Win32 版本:4.0.30319.235 构建者:RTMGDR代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll---------------------------------------- System.Drawing汇编版本:4.0.0.0Win32 版本:4.0.30319.1 构建者:RTMRel代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll- - - - - - - - - - - - - - - - - - - - 系统汇编版本:4.0.0.0Win32 版本:4.0.30319.236 构建者:RTMGDR代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

***** Loaded Assemblies ******* mscorlib Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.239 (RTMGDR.030319-2300) CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll ---------------------------------------- C Sharp version Assembly Version: 1.0.0.0 Win32 Version: 1.0.0.0 CodeBase: file:///gordonc$/Desktop/C%20Sharp%20version%20(2).exe ---------------------------------------- System.Windows.Forms Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.235 built by: RTMGDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll ---------------------------------------- System.Drawing Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.1 built by: RTMRel CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll ---------------------------------------- System Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.236 built by: RTMGDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

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;
using System.IO;
using Word = Microsoft.Office.Interop.Word;
using Microsoft.Office.Interop.Word;


namespace C_Sharp_version
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void FindAndReplace(Microsoft.Office.Interop.Word.Application doc, object findText, object replaceWithText)
        {
            //options
            object matchCase = false;
            object matchWholeWord = true;
            object matchWildCards = false;
            object matchSoundsLike = false;
            object matchAllWordForms = false;
            object forward = true;
            object format = false;
            object matchKashida = false;
            object matchDiacritics = false;
            object matchAlefHamza = false;
            object matchControl = false;
            object read_only = false;
            object visible = true;
            object replace = 2;
            object wrap = 1;
            //execute find and replace
            doc.Selection.Find.Execute(ref findText, ref matchCase, ref matchWholeWord,
                ref matchWildCards, ref matchSoundsLike, ref matchAllWordForms, ref forward, ref wrap, ref format, ref replaceWithText, ref replace,
                ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openInfDoc = new OpenFileDialog();

            if (openInfDoc.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string strInfDocLocation = openInfDoc.FileName;

                MessageBox.Show(strInfDocLocation);
                InfDocLocationtxt.Text = strInfDocLocation;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog openNetdoc = new OpenFileDialog();
            if (openNetdoc.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string strNetDocLocation = openNetdoc.FileName;

                MessageBox.Show(strNetDocLocation);
                NetDocLocationtxt.Text = strNetDocLocation;
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            OpenFileDialog openChkdoc = new OpenFileDialog();
            if (openChkdoc.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string strChkDocLocation = openChkdoc.FileName;

                MessageBox.Show(strChkDocLocation);
                ChkDocLocationtxt.Text = strChkDocLocation;
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            object fileName = Path.Combine(System.Windows.Forms.Application.StartupPath, InfDocLocationtxt.Text);
            Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application { Visible = true };
            Microsoft.Office.Interop.Word.Document aDoc = wordApp.Documents.Open(ref fileName, ReadOnly: false, Visible: true);
            aDoc.Activate();
            FindAndReplace(wordApp, "<ServerName>", textBox1.Text);
            FindAndReplace(wordApp, "<Domain>", textBox2.Text);
            FindAndReplace(wordApp, "<Ip>", textBox3.Text);
            FindAndReplace(wordApp, "<Engineer>", textBox4.Text);
            FindAndReplace(wordApp, "<Date>", textBox5.Text);
            FindAndReplace(wordApp, "<Project>", textBox6.Text);
            FindAndReplace(wordApp, "<Cluster>", textBox7.Text);
            FindAndReplace(wordApp, "<DocNumber>", textBox8.Text);
            FindAndReplace(wordApp, "<Author>", textBox9.Text);


        }

        private void button7_Click(object sender, EventArgs e)
        {

        }

        private void button5_Click(object sender, EventArgs e)
        {
            object fileName = Path.Combine(System.Windows.Forms.Application.StartupPath, NetDocLocationtxt.Text);
            Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application { Visible = true };
            Microsoft.Office.Interop.Word.Document aDoc = wordApp.Documents.Open(ref fileName, ReadOnly: false, Visible: true);
            aDoc.Activate();
            FindAndReplace(wordApp, "<ServerName>", textBox1.Text);
            FindAndReplace(wordApp, "<Domain>", textBox2.Text);
            FindAndReplace(wordApp, "<Ip>", textBox3.Text);
            FindAndReplace(wordApp, "<Engineer>", textBox4.Text);
            FindAndReplace(wordApp, "<Date>", textBox5.Text);
            FindAndReplace(wordApp, "<Project>", textBox6.Text);
            FindAndReplace(wordApp, "<Cluster>", textBox7.Text);
            FindAndReplace(wordApp, "<DocNumber>", textBox8.Text);
            FindAndReplace(wordApp, "<Author>", textBox9.Text);
        }

        private void button6_Click(object sender, EventArgs e)
        {
            object fileName = Path.Combine(System.Windows.Forms.Application.StartupPath, ChkDocLocationtxt.Text);
            Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application { Visible = true };
            Microsoft.Office.Interop.Word.Document aDoc = wordApp.Documents.Open(ref fileName, ReadOnly: false, Visible: true);
            aDoc.Activate();
            FindAndReplace(wordApp, "<ServerName>", textBox1.Text);
            FindAndReplace(wordApp, "<Domain>", textBox2.Text);
            FindAndReplace(wordApp, "<Ip>", textBox3.Text);
            FindAndReplace(wordApp, "<Engineer>", textBox4.Text);
            FindAndReplace(wordApp, "<Date>", textBox5.Text);
            FindAndReplace(wordApp, "<Project>", textBox6.Text);
            FindAndReplace(wordApp, "<Cluster>", textBox7.Text);
            FindAndReplace(wordApp, "<DocNumber>", textBox8.Text);
            FindAndReplace(wordApp, "<Author>", textBox9.Text);
        }


    }
}

推荐答案

在我看来,这是一个 .NET Framework compatibility 问题.

it seems to me as a .NET Framework compatibility issue.

问题:您在本地机器上开发了应用程序,使用更高版本的.NET Framework,并在具有 较低版本的远程电脑上运行相同的应用程序.NET 框架.

Problem : you have developed your application in your local machine with heigher version of .NET Framework and running the same on remote pc having Lower Version of.NET Framework.

注意:如果您的应用程序的目标是在 Heigher 版本的 .NET Framework 上运行,它不会在较低版本上运行.

Note : if you target your application to run on Heigher Version of .NET Framework it wont run on lower versions.

解决方案:您需要将其定位到 .NET Framework 远程 PC 上可用的较低版本才能在远程 PC 上运行.

Solution : you need to target it to .NET Framework Lower Version available on your remote PC to run on remote pc.

第一步:右键点击project - 选择properties

第 2 步:Target Framework.NET Framework xx 更改为 .NET Framework xy.

Step 2: change the Target Framework from .NET Framework x.x to .NET Framework x.y.

注意:其中x.x 是较高版本,x.y 是远程PC 或任何较低版本上可用的较低版本.

Note : where x.x is heigher and x.y is lower version available on remote pc or any lower version.

这篇关于找不到方法:'System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid)'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 00:24
查看更多