c#如何更改构建文件以允许为继承类创建DLL?
我正在使用visual Studio 2013 Express构建一个winforms插件项目。这将是一个“工具箱”,通过将DLL复制到某个文件夹,可以在其中添加各种“工具”,在新的选项卡页上可以看到、加载和添加这些DLL。我决定为插件框架运行一个VS copy,并创建一个插件 我找到了如何从studio项目创建DLL的线索,第一次测试一切顺利。不错的工作流程。但是,当我将第一个工具更改为从自定义插件基类(继承自UserControl)而不是直接从UserControl下降时,我遇到了一个编译器错误。(找不到类型或命名空间“Base…” 这是一个完全精简的版本,将得到相同的错误。显然,已编辑的.csproj文件中存在错误或缺失c#如何更改构建文件以允许为继承类创建DLL?,c#,winforms,plugins,dll,csproj,C#,Winforms,Plugins,Dll,Csproj,我正在使用visual Studio 2013 Express构建一个winforms插件项目。这将是一个“工具箱”,通过将DLL复制到某个文件夹,可以在其中添加各种“工具”,在新的选项卡页上可以看到、加载和添加这些DLL。我决定为插件框架运行一个VS copy,并创建一个插件 我找到了如何从studio项目创建DLL的线索,第一次测试一切顺利。不错的工作流程。但是,当我将第一个工具更改为从自定义插件基类(继承自UserControl)而不是直接从UserControl下降时,我遇到了一个编译器
- 那么,应该如何更改构建文件以允许为继承的类创建DLL呢
- 还有:有没有关于选项的解释,比如“Plugin”或“DependentUpon”或“SubType”
- 顺便说一句:在真实版本中,我必须合并UserControl的部分类部分才能使其工作。(那是在移动到基类之前)我可以更改.csproj文件以允许部分类吗
使用制度;
//..
命名空间测试\u cx1
{
阶级基础
{
}
}
使用系统; //.. 命名空间测试\u cx1 { 类工具1:基本类 { } } 符合事实的 符合事实的 .. ..
<CSC Sources="Base.cs;Tool1.cs" TargetType="library" OutputAssembly="$(OutputPath)Tool1.dll" EmitDebugInformation="true" />
在源代码中,列出插件所需的文件,并将输出路径修改为所需dll的任何名称
但是,在您的情况下,我可能会建议您将每个工具的项目添加到解决方案中。通过“运行VS复制”,您的意思是您正在使用“工具箱”和“工具”的两个不同解决方案运行Visual Studio的两个实例吗?对。我还添加了一个构建后xcopy来将dll复制到另一个解决方案中。很有魅力,酷!这正是正确的妥协。至于每个工具建议的项目:我想我会为那些无关的、没有太多共享的工具这样做。不过,我遇到了两个新问题。一个是关于XCOPY复制旧版本,另一个是关于向上转换到基类以获得invalidcast错误。看和。好的,这是最后的答案:上面的建议很接近,但并不完全正确。如果我通过将基类添加到源代码中直接将其编译到DLL中,它将与尝试引用它的任何其他构建不同。所以我不能在消费程序中向上转换到基础。因此,必须将引用添加到csc行中,如下所示:
添加并添加到最终答案:由于难以理解的原因,构建文件也不尊重其他依赖项,尤其是部分类(如usercontrols)的连接;因此,我必须将“usercontrol.designer.cs”添加到源代码中。叹气(上述方法之所以有效,是因为我已经销毁了designer.cd并将其修补到cs文件中。(arghh…)所有这些问题都是我建议您使用单独项目的原因。:)是 啊好我已经准备好了大约一个dozem小工具,而且数量还会增加。在公共库中保留一些是可以的,但对于较大的库,我将使用单独的库。工具箱中的库管理器已就位,工作正常。但我真的想要所有的选择。顺便说一句:我仍然没有将resourcefile包含到构建中。一定有办法。。
<CSC Sources="Base.cs;Tool1.cs" TargetType="library" OutputAssembly="$(OutputPath)Tool1.dll" EmitDebugInformation="true" />