Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何用C语言将一个程序编译成不同的项目#_C#_.net_Visual Studio_Compilation - Fatal编程技术网

C# 如何用C语言将一个程序编译成不同的项目#

C# 如何用C语言将一个程序编译成不同的项目#,c#,.net,visual-studio,compilation,C#,.net,Visual Studio,Compilation,我们可以这样说:我有一个项目,这个项目使用了一个引用(office2016.dll)。 在我的项目中,我有一个c#类,可以访问这些引用,并且运行良好 现在我想编译相同的代码,但使用不同的引用,这次是(office2012.dll)。 请注意,(office2016.dll和office2012.dll)与我在c#代码中使用的方法和类型相同。 但我想为每个产品发布不同的(EXE)。一个用于office 2016,另一个用于office 2012 是否可以在不同的引用(dll)上编译相同的c#代码?

我们可以这样说:我有一个项目,这个项目使用了一个引用(office2016.dll)。 在我的项目中,我有一个c#类,可以访问这些引用,并且运行良好

现在我想编译相同的代码,但使用不同的引用,这次是(office2012.dll)。 请注意,(office2016.dll和office2012.dll)与我在c#代码中使用的方法和类型相同。 但我想为每个产品发布不同的(EXE)。一个用于office 2016,另一个用于office 2012

是否可以在不同的引用(dll)上编译相同的c#代码?


一种解决方案是在一个新项目中复制我的c#代码,然后添加另一个(office2012.dll),然后重新编译,它可以正常工作,但我不想手动操作,因为我每天都在工作,需要很多努力和专注,当然还需要额外的时间,因为我真的不相信复制/粘贴代码,这其实是一件乏味的工作

您可以在同一文件夹中创建项目文件的副本(
.csproj
),然后将复制的项目包括在解决方案中。然后可以为每个项目选择正确的参照。确保转到项目属性并为每个项目选择自定义程序集名称和/或输出文件夹(即
myoffice2012app.exe
和/或
bin/Release2012

以后添加的任何代码文件都必须包含在每个副本中,但选择“显示所有文件”可以简化此操作:


右键单击新文件并选择“包含在项目中”-但除了必须将每个新代码文件分别添加到每个项目之外,您还可以根据需要构建解决方案,而无需进一步的步骤。

您可以使用带有文件链接的hack。创建两个项目:一个包含实际代码和对office2016.dll的引用。但是第二个只有指向第一个项目中的文件的链接,并且引用了office2012.dll。要创建链接,您需要使用Alt按钮从第一个项目拖动文件。如何向项目添加链接,我尝试过,但无法添加链接您可以使用Alt按钮从第一个项目拖动。或者使用“添加现有项”。“添加”按钮有一个下拉列表,允许选择“添加为链接”。我添加了我的c#类,但有一个编译错误,它无法访问代码中的引用。因为正如我在c#类中所说,我使用了对office2016.dll的引用,通过将c#类添加到另一个新项目中,它无法访问旧项目引用1。第二个项目应具有与第一个项目相同的引用,但office2016.dll除外。如果这不起作用,则office2016.dll和office2012.dll中的类位于不同的命名空间中。解决方法:条件编译。我不喜欢使用任何代码副本。这不是一个具体的机制,正如我上面解释的那样,它不够有效!您不复制代码-您复制项目文件,并且在每个项目中包含相同的代码文件。您键入的每一行代码都将同时出现在所有项目文件中,您可以一次编译所有代码。