我从MSDN订阅升级到Visual Studio 2015,因为我很高兴阅读有关共享项目的内容...当我们想要做的只是重用代码时,不再需要在我们的依赖项中管理21382个nuget包.
所以我用一些代码构建了一个测试共享项目.然后我在.Net 4.6上添加一个新的空Web应用程序到项目中.现在我希望转到引用并在引用窗口中看到"共享项目"选项卡,但我没有看到.
现在我可以在同一个解决方案中添加一个类库,然后我会看到该选项卡并添加共享引用.但是我无法将共享项目添加到我的Web应用程序中.
我非常希望我可以使用这个概念与多个MVC项目共享视图.
我在这里遗漏了什么,或者是与Web Projects不兼容的共享项目?
我看到的唯一方法是为我构建的每个Web应用程序提供两个项目.代码为1,内容为1.
例如
XYZ.SomeWebSite.Code (Class Library Project Type) -> references Shared Project
XYZ.SomeWebSite (Web Project Type)
Run Code Online (Sandbox Code Playgroud)
然而,走这条路线,我将无法将视图,文本文件,CSS文件,javascript文件等推送到Web应用程序中.
xamarin共享项目和便携式类库之间的确切区别是什么?
何时使用共享库以及何时使用可移植类库?
这是否可以在共享项目中编写本机功能,如显示警报,访问摄像头并将其用于Android和iOS?
任何人都可以解释我.
我正在使用Visual Studio 2015
我有一个共享项目作为独立解决方案(在其他几个解决方案中使用的扩展集合).
我想测试共享项目(独立于任何其他解决方案).
所以,我添加了一个新的TEST项目.
但是,在我的TEST项目中,我无法添加任何对共享项目的引用(无选项).
我们有一个共享项目的解决方案,该项目由另外两个项目引用.
在共享项目中,我们有resx
文件,但我们注意到Designer.cs
在resx中添加或修改术语时不会更新代码隐藏文件.显然,共享项目不支持嵌入式资源的自定义工具生成(ResXFileCodeGenerator).
我一直在寻找克服这个限制的一段时间.我尝试使用所有资源文件创建一个类库,但后来我偶然发现了无法在共享项目中添加对该类库的引用的问题.
有谁知道如何解决这个问题?将资源文件放在类库中,并且能够在我们的共享项目视图中使用它们吗?
-
除了上面的问题,resx
当我们只是在Designer.cs
文件中添加代码时,我们可以获取文件上的文件,但看起来仍然存在一些问题.
例如,在视图中,我们可以通过命名空间和术语名称获得翻译,但在IDE中,它们显示为红色(不可解析).但是,如果我们运行应用程序,它的工作方式应该如此.
更新:resx
在运行应用程序时,我能够在我的视图中显示的单独项目中的文件中进行翻译.但是,在视图所在的共享项目中,我对该resx
文件的引用仍以红色显示.这可能是因为共享项目没有引用翻译项目.一旦构建,具有引用的"真实"项目可以找到resx
翻译,因此在运行应用程序时没有问题.
有没有办法告诉visual studio我的共享项目使用resx
来自单独的类库的文件,以便它找到条款并且不强调我的引用?让intellisense工作会很好.
根据评论中的要求,请参阅我的View/Html代码片段:
@using System.Configuration
@{
ViewBag.Title = "ManageCategories";
}
<div class="main container-fluid">
<div id="spis-categories" ng-controller="categoriesController as categoriesVm" ng-cloak ng-init="categoriesVm.siteName='@ConfigurationManager.AppSettings["siteName"]';categoriesVm.pageSize = @inConnexion.Common.Constants.Constants.PageSize">
<div class="modal cust-modal-ontop" tabindex="-1" role="dialog" id="confirmDeleteDialog" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog cust-modal-dialog">
<div class="modal-content cust-modal-content">
<div class="modal-header">
<h4 class="modal-title">@CategoryResources.SPIS_Categories_Maintenance.Button_Delete</h4>
</div>
<div class="modal-body">
<p>@CategoryResources.SPIS_Categories_Maintenance.Confirm_Delete</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" ng-click="categoriesVm.doDeleteSelected();"><span class="glyphicon glyphicon-ok" aria-hidden="true"></span> @CategoryResources.SPIS_Categories_Maintenance.Label_Yes</button>
<button …
Run Code Online (Sandbox Code Playgroud) 我已经创建了许多共享项目,我正在测试这些是否可以在我希望和期望的所有不同项目类型之间共享.到目前为止,我已经管理了所有这些(有时还有一些解决方法),但我还不知道如何使用.NET Core类库来实现它,这非常有用.
我似乎无法通过Visual Studio 2015来实现,有没有人知道这样做的方法?也许直接在类库的project.json文件中输入引用?
编辑:从Visual Studio 2017 RC开始,Shared Projects可以正常使用.NET Core项目.
我正在努力修复警告
警告CS0436:'...\SharedProject1\SharedProject1\Class1.cs'中的类型'Class1'与'ClassLibrary1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'中的导入类型'Class1'冲突.使用'...\SharedProject1\SharedProject1\Class1.cs'中定义的类型.WpfApplication1 ...\SharedProject1\WpfApplication1\MainWindow.xaml.cs
摄制:
SharedProject1(向其添加新类)
namespace SharedProject1
{
public class Class1() { }
}
Run Code Online (Sandbox Code Playgroud)
ClassLibrary1的
namespace ClassLibrary1
{
public class Class1 { }
}
Run Code Online (Sandbox Code Playgroud)
WpfApplication1(将其添加到MainWindow
构造函数)
public MainWindow()
{
InitializeComponent();
var a = new SharedProject1.Class1();
var b = new ClassLibrary1.Class1();
}
Run Code Online (Sandbox Code Playgroud)
参考SharedProject1
在两个ClassLibrary1
和WpfApplication1
;
建立,你会得到一个警告.
问题:如何修复警告?
我是共享项目的忠实粉丝,我想类似地使用T4模板:在不同的解决方案中引用共享项目,并且无需麻烦地访问生成的内容.
如何使T4模板在共享项目中工作?
我正在寻找一种ResourceDictionary
在项目之间共享的方法。
将新项目添加到共享项目不提供资源字典。它可以在其他(主)项目中创建并拖动。但是我无法将其构建选项更改为Page:
这个想法是像这样加载资源字典
var dictionary = new ResourceDictionary();
dictionary.Source = new Uri("/WpfApplication91;component/Dictionary2.xaml", UriKind.Relative);
Run Code Online (Sandbox Code Playgroud)
目前这显然失败了
“System.IO.IOException”类型的异常出现在PresentationFramework.dll中,但未在用户代码中处理
附加信息:无法找到资源“dictionary2.xaml”。
有任何想法吗?
我有一个共享项目和一个引用共享项目的 .net Core 2.0 Web 应用程序。我的目的是在共享项目中维护一组通用的 css 和图像,以供多个 Web 应用程序使用。但我不知道如何在 Web 应用程序中包含图像和 css。例如,它们如何最终出现在 wwwroot/dist 文件夹中?很多博客都对共享项目有多棒以及它们如何用于 css 和图像赞不绝口,但从未真正解释过如何使用它们来做到这一点。
我刚刚在visual studio 2017中学习并创建了一个共享项目。我注意到共享项目没有“参考”来引用其他资源(其他项目,类库,......)。我什至查看了 .shproj 文件,发现它只导入了我在共享项目中创建的类。
我的问题是,如果我想创建一个加载项应用程序,我需要使用类库来调用原始软件公开的必要 API。如何将其他项目/类库(或一般资源)引用/添加到我的共享项目?或者这甚至可能吗?
我的部分问题也在这里描述,参考来自其他共享项目的共享项目
但我需要一个更通用的解决方案。谢谢大家的帮助。
所以我有两个类,如下所示。它们都在同一个命名空间和同一个共享项目中。
public class Person{
public string Name{get;set;}
}
public class EmployedPerson : Person{
public string JobTitle{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
当我将这些项目序列化为 rabbitmq 时,我将序列化为基类,如下所示:
JsonSerializerSettings settings = new JsonSerializerSettings
{
TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple,
TypeNameHandling = TypeNameHandling.Objects
};
JsonConvert.SerializeObject(input, settings)
Run Code Online (Sandbox Code Playgroud)
但是在反序列化时我遇到了问题。我希望能够执行如下所示的操作,其中我将反序列化为基类,然后检查它是否是继承类型。
类型检查:
Person person = Deserialize<Person>(e.Body, Encoding.Unicode);
if (person is EmployedPerson)
{
logger.LogInformation("This person has a job!");
}
Run Code Online (Sandbox Code Playgroud)
反序列化设置:
JsonSerializerSettings settings = new JsonSerializerSettings
{
TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple,
TypeNameHandling = TypeNameHandling.Auto
};
Run Code Online (Sandbox Code Playgroud)
反序列化逻辑:
private static T Deserialize<T>(byte[] data, Encoding encoding) where T : class
{ …
Run Code Online (Sandbox Code Playgroud) 我刚刚遇到这种情况,我想我会分享它,以防它为您节省一些时间。
我在 VS2017 中有一个相当大的解决方案,并且有一个共享项目,其中包含一些通用代码,例如枚举。
我只是尝试将我的共享项目添加到另一个项目(右键单击项目,添加引用并转到共享项目部分)并注意到共享项目是空的。它没有给我共享项目作为一个选项。
看我下面的回答...