none
как такое может быть ? RRS feed

  • Вопрос

  •  привет !

        я беру данные со списка из журнала версий и записываю их в excel файл. Пользуюсь я сторонней библиотекой  ClosedXML 0.65.2

      с консольным приложением у меня все хорошо(.net 3.5 )  . данные в файл записываются в excel.  а когда я это переношу на ApplicationPage у меня при нажатии на строчку editcontrolblock вылетает ошибка выполения и в логе пишет такое :

    Application error when access /_layouts/ControlTest/ApplicationPage1.aspx, Error=Невозможно загрузить файл или сборку "ClosedXML, Version=0.65.2.0, Culture=neutral, PublicKeyToken=fd1eb21b62ae805b" или один из зависимых от них компонентов. Не удается найти указанный файл. в ControlTest.Layouts.ControlTest.ApplicationPage1.P­age_Load(Object sender, EventArgs e) в System.Web.Util.CalliHelper.EventArgFunctionCaller­(IntPtr fp, Object o, Object t, EventArgs e) в System.Web.Util.CalliEventHandlerDelegateProxy.Cal­lback(Object sender, EventArgs e) в System.Web.UI.Control.OnLoad(EventArgs e) в Microsoft.SharePoint.WebControls.UnsecuredLayoutsP­ageBase.OnLoad(EventArgs e) в Microsoft.SharePoint.WebControls.LayoutsPageBase.O­nLoad(EventArgs e) в System.Web.UI.Control.LoadRecurs... bc99dc15-748e-4cb1-a635-7516f1180ace

    вот работающее консольное приложение :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using System.IO;
    using ClosedXML;
    using DocumentFormat;
    using ClosedXML.Excel;
    namespace testtest
    {
        class test
        {
            static void Main(string[] args)
            {
                test a = new test();
                a.method();
            }
            public void method()
            {
                using (SPSite site = new SPSite("http://localhost/Deps/sup/"))
                using (SPWeb web = site.OpenWeb())
                {
                    SPList objList = web.Lists["Местонахождение"];
                    SPQuery objQuery = new SPQuery();
                    objQuery.Query = "<Where><Gt><FieldRef Name=\"ID\"/><Value Type=\"Counter\">0 </Value></Gt></Where>";
                    SPListItemCollection objItemColl = objList.GetItems(objQuery);
                    string file = "C:\\newHelloTest.xls";
                    var workbook = new XLWorkbook();
                    var worksheet = workbook.Worksheets.Add("Sample Sheet");
                    //worksheet.Cell("A1").Value = "Hello World!";
                    //workbook.SaveAs(file);
                    using (System.IO.TextWriter writer = new StreamWriter(@"C:\custommenuoutput.txt", true))
                    {
                        int i = 0;
                        foreach (SPListItem objItem in objItemColl)
                        {
                            SPListItemVersionCollection objVerisionColl = objItem.Versions;
                            foreach (SPListItemVersion objVersion in objVerisionColl)
                            {
                                i = i + 1;
                                int versionID = objVersion.VersionId;
                                DateTime timeofcreation = objVersion.Created;
                                string strVersionLabel = objVersion.VersionLabel;
                                SPListItem objLstItm = objVersion.ListItem;
                                string strUserVal = objVersion["Name"] as string;
                                //string strFirstName = !string.IsNullOrEmpty(strUserVal) ? new SPFieldUserValue(SPContext.Current.Web, strUserVal).LookupValue : "";
                                string strPlace = Convert.ToString(objVersion["Расположение"]);
                                string strTopTrip = Convert.ToString(objVersion["Начало"]);
                                string strEndOfTrip = Convert.ToString(objVersion["Окончание"]);
                                string strFirstName = " sdfg ";
                                worksheet.Cell(i, 1).Value = strFirstName;
                                worksheet.Cell(i, 2).Value = strPlace;
                                worksheet.Cell(i, 3).Value = strTopTrip;
                                worksheet.Cell(i, 4).Value = strEndOfTrip;
                                writer.WriteLine(string.Format("Имя: {0} Расположение: {1} Начало: {2} Окончание: {3}", strFirstName, strPlace, strTopTrip, strEndOfTrip));
                            }
                        }
                    }
                    workbook.SaveAs(file);
               }
            }
        }
    }

    в чем причина  ?

    спасибо !

Ответы

Все ответы

  • Причина возможно в том, что сборка ClosedXML отсутствует в GAC на сервере где работает SharePoint.

    Dmitry

    Lightning Tools LogoLightning Tools Check out our SharePoint tools and web parts | Lightning Tools Blog

    Отвечающий
  • Microsoft Windows [Версия 6.0.6002]
    (C) Корпорация Майкрософт, 2006. Все права защищены.

    C:\Windows\system32>d:

    D:\>cd D:\ClosedXML_v0.65.2

    D:\ClosedXML_v0.65.2>gacutil -i ClosedXML.dll
    "gacutil" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

    D:\ClosedXML_v0.65.2>

    команда ведь та, вроде

     ?  

  • зашел в командуню строку visual studio 

    тот же эффект (

  • error : cannot determine the location of the vs common tools folder

    (

  • добавил сборку через  add existing assemb в VS

    и все же интересно , как исправлять ошибку

    error : cannot determine the location of the vs common tools folder

    This same problem just started occurring for me and I was able to "fix" it by updating the vcvars32.bat file located in the C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\ folder (by default). Add the following after the first line:
    @SET VSINSTALLDIR=c:\Program Files\Microsoft Visual Studio 10.0
    @SET VCINSTALLDIR=c:\Program Files\Microsoft Visual Studio 10.0\VC
    @SET FrameworkDir32=c:\Windows\Microsoft.NET\Framework
    @SET FrameworkVersion32=v4.0.30319
    @SET Framework35Version=v3.5
    And then comment out the following lines:
    :: @call :GetVSCommonToolsDir
    :: @if "%VS100COMNTOOLS%"=="" goto error_no_VS100COMNTOOLSDIR
    :: @call "%VS100COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit
    Found this here. Note that I say fix in quotes because I haven't checked to make sure that all the appropriate variables are set properly; that said, at a cursory glance it does appear to be valid.
    Note that you'll have to edit the vcvars32.bat file in an elevated text editor (ie, Run as Admin) to be able to save the file in Vista and Windows 7.

    это с одного форума

    я не понял куда добавлять эти строки...
    на таком пути C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin у меня куча приложений и кула добавлять я пока что не понимаю

    спасибо ! :)

  • Если вы хотите что-то поместить в GAC во время установки WSP пакета, вы можете сделать это так SharePoint: Will deploying a WSP install DLL's in Gac?

    Dmitry

    Lightning Tools LogoLightning Tools Check out our SharePoint tools and web parts | Lightning Tools Blog

    • Помечено в качестве ответа Roman Zhukov 11 июня 2012 г. 13:13
    Отвечающий
  • Откройте в проводнике c:\windows\assembly и перетащите (drag'n drop) туда длл-ку cloedxml

    *нужно сделать это на всех фронтах фермы.


    LinkedIn Profile

    • Помечено в качестве ответа Roman Zhukov 11 июня 2012 г. 13:13