VS 2010将非GUI类文件设置为组件
本文关键字:设置 组件 文件 2010 将非 GUI VS | 更新日期: 2023-09-27 17:58:35
我对Visual Studio 2010有一段时间的烦恼。我有一个我制作的类文件,VS将其保存为类型"Component",我无法识别任何原因。如果我忘记并试图打开文件,它会查找不存在的设计器。
我在谷歌上发现了VS2005的一些类似问题,但这些问题似乎与从GUI组件类(listbox、combobox等)派生有关。这个类不做那个。
文件名为GpsUtilities.cs。它在csproj文件中显示如下,SubType
为Component
。不存在对该文件的其他引用,即没有任何内容将其声明为DependentUpon
。
<Compile Include="Utilities'GpsUtilities.cs">
<SubType>Component</SubType>
</Compile>
即使我删除了SubType
标记,即使我明确地将其设置为Code
而不是Component
,它仍然将其保存为Component
的SubType
。
这是类结构(去掉所有代码)。正如我所说,它不继承,甚至不导入任何与GUI相关的名称空间。
using System;
using System.ComponentModel;
using System.IO.Ports;
using System.Text.RegularExpressions;
using System.Timers;
using System.Xml.Serialization;
namespace AppNamespace
{
public class GpsUtil : INotifyPropertyChanged
{
public GpsUtil() { }
public static GpsUtil CreateInstance() { }
public bool IsGpsReady { get; }
public GPSPort GpsSerialPort { get; private set; }
public Timer GpsTimer { get; set; }
private CircularArray<GpsPositionData> PositionBuffer { get; set; }
private GpsPositionData m_GpsCurLoc;
public GpsPositionData MyLocation { }
public string GpggaPattern { get; set; }
public Regex GpggaRegEx { get; set; }
public GpsPositionData GpsPosDataFromRegExMatch(Match gpsRegExMatch) { }
public void SetGpsPosition(double latitude, double longitude) { }
private void gpsTimer_Elapsed(object sender, ElapsedEventArgs e) { }
private bool InitializeGpsPort() { }
public bool TestGpsPort() { }
public double ComputeSquaredDistance(double startLat, double startLon, double endLat, double endLon) { }
public event PropertyChangedEventHandler PropertyChanged;
}
public class GPSPort : SerialPort
{
public GPSPort(string portName, int baudRate = 9600) : base(portName, baudRate)
{
}
private bool TestResult { get; set; }
public bool Test(int interval = 3000, bool leavePortOpen = false) {}
}
public enum GpsFixQuality { Invalid = 0, GpsFix = 1, DgpsFix = 2 }
[Serializable]
public class GpsPositionData
{
public GpsPositionData() { }
public GpsPositionData(double latitude, double longitude) {}
public override string ToString() {}
public bool IsCloseTo(GpsPositionData otherPoint, double tolerance = 0.0001) {}
public GpsPositionData(DateTime time, double latitude, double longitude, GpsFixQuality fixQuality, int numberOfSatellites, double hdop, double altitude, double geodialSeparation, int ageOfDgps, string dgpsRefStationId){}
[XmlIgnore]
public DateTime Time { get; private set; }
[XmlElement("Latitude", typeof(double))]
public double Latitude { get; set; }
[XmlElement("Longitude", typeof(double))]
public double Longitude { get; set; }
[XmlIgnore]
public GpsFixQuality FixQuality { get; private set; }
[XmlIgnore]
public int NumberOfSatellites { get; private set; }
[XmlIgnore]
public double Hdop { get; private set; }
[XmlIgnore]
public double Altitude { get; private set; }
[XmlIgnore]
public double GeodialSeparation { get; private set; }
[XmlIgnore]
public int AgeOfDgps { get; private set; }
[XmlIgnore]
public string DgpsRefStationId { get; private set; }
}
}
提前谢谢。
如果要将所有类保存在一个文件中,可以使用GPSPort
类上的[System.ComponentModel.DesignerCategory("Code")]
属性来覆盖默认行为。详细信息请注意,即使您有using System.ComponentModel
语句,也必须使用完全限定属性,否则VS将忽略它。
我猜想,这是由于您的GPSPort
类,它扩展了SerialPort
,它扩展Component
。试着删除它(或者将它移到一个单独的文件中),看看它是否解决了问题。