Exemple #1
0
		///-------------------------------------------------------------------------------------------------------------
		/// <summary>
		///	 
		/// </summary>
		///-------------------------------------------------------------------------------------------------------------
		void IVsCodeBehindCodeGenerator.Generate()
		{
			DocData ddDesigner = null;
			DocDataTextWriter designerWriter = null;

			try
			{
				if (_itemCode != null && _codeDomProvider != null)
				{

					// Generate the code
					StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture);
					_codeDomProvider.GenerateCodeFromCompileUnit(_ccu, stringWriter, _codeGeneratorOptions);
					string generatedCode = stringWriter.ToString();

					// Create designer file if requested
					if (_itemDesigner == null && _create)
					{
						_itemDesigner = GetDesignerItem(_itemCode, true);
					}

					// See if generated code changed
					string designerContents = _itemDesigner.GetDocumentText();
					if (!BufferEquals(designerContents, generatedCode))  // Would be nice to just compare lengths but the buffer gets formatted after insertion
					{
						ddDesigner = new LockedDocData(_serviceProvider, _itemDesigner.FullPath());

						// Try to check out designer file (this throws)
						ddDesigner.CheckoutFile(_serviceProvider);

						// Write out the new code
						designerWriter = new DocDataTextWriter(ddDesigner);
						designerWriter.Write(generatedCode);
						designerWriter.Flush();
						designerWriter.Close();
					}
				}
			}
			finally
			{
				if (designerWriter != null)
				{
					designerWriter.Dispose();
				}
				if (ddDesigner != null)
				{
					ddDesigner.Dispose();
				}
			}
		}
        ///-------------------------------------------------------------------------------------------------------------
        /// <summary>
        ///	 
        /// </summary>
        ///-------------------------------------------------------------------------------------------------------------
        void IVsCodeBehindCodeGenerator.Generate()
        {
            DocData ddDesigner = null;
            DocDataTextWriter designerWriter = null;

            try
            {
                if (_itemCode != null && _codeDomProvider != null)
                {

                    // Generate the code
                    StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture);
                    _codeDomProvider.GenerateCodeFromCompileUnit(_ccu, stringWriter, _codeGeneratorOptions);
                    string generatedCode = stringWriter.ToString();

                    // Create designer file if requested
                    if (_itemDesigner == null && _create)
                    {
                        _itemDesigner = GetDesignerItem(_itemCode, true);
                    }

                    // See if generated code changed
                    string designerContents = _itemDesigner.GetDocumentText();
                    if (!BufferEquals(designerContents, generatedCode))  // Would be nice to just compare lengths but the buffer gets formatted after insertion
                    {
                        ddDesigner = new LockedDocData(_serviceProvider, _itemDesigner.FullPath());

                        // Try to check out designer file (this throws)
                        ddDesigner.CheckoutFile(_serviceProvider);

                        // Write out the new code
                        designerWriter = new DocDataTextWriter(ddDesigner);
                        designerWriter.Write(generatedCode);
                        designerWriter.Flush();
                        designerWriter.Close();
                    }
                }
            }
            finally
            {
                if (designerWriter != null)
                {
                    designerWriter.Dispose();
                }
                if (ddDesigner != null)
                {
                    ddDesigner.Dispose();
                }
            }
        }